와롤러

개발자 와롤러에게 하고 싶은 질문을 남겨주세요. 이곳에 항상 답변하기는 힘들고 나중에 한꺼번에 답변 할 예정입니다. 디스코드에서 스트리밍합니다

답변 102개고마와요! 22개
익명 두더지5개월 전 초대 받음

날씨가 많이 덥네요. 더위 조심하세요.

와롤러5개월 전

좋습니다 혁종님도 조심하십시오

익명 두더지5개월 전 초대 받음

GPT의 등장과 같은 AI기술이 점점 발전해가는데요. 프론트엔드 개발자의 끝은 언제쯤 될 것이라고 예상하시나요?

와롤러5개월 전

그것은…. 와규님이 은퇴하는 날

익명 두더지5개월 전

선생님 안녕하세요! 정말 요즘 너무 더운 날씨입니다..ㅠㅠ 더위 조심하시고용..! 다름이 아니라.. 선생님께서 추천해주셨던 뇌를 자극하는 알고리즘 / 프로그래머가 몰랐던 멀티코어 CPU 이야기 2010년대 나왔던 책들인데 좀 오래된 책이라 2023년에 들어와서도 읽어도 될지 궁금해서 여쭤봐요.. 두 책 다 절판된 책인데 운좋게 구해서요ㅎㅎ 그리고 따로 추천해주실 책도 있는지 궁금합니다.

와롤러5개월 전

상관 없습니다! 기초는 변하지 않으니까요. 알고리즘은 바뀌지 않는 기술입니다. 때문에 튼튼하게 이해하고 있어야 합니다. 두 책 모두 1990년의 알고리즘, CPU와 큰 차이가 없습니다. 알고리즘은 트렌드가 아니라 Fundamental 입니다.

익명 두더지6개월 전

안녕하세요 와롤러님. 어제 운영체제 강의에서 질문 못한게 있어서 더지에 남깁니다 (다음 시간에 다룰 내용이라고 하셔서 고민하다가 질문을 안했는데, 계속 궁금증이 남네요) - 프로세스 a, b, c 가 메모리에 올라가 있는 상황 - a의 작업이 오래걸려서 b로 갈아타고, b도 느려서 c로 갈아탄 상황 -> 위의 상황에서 a 프로세스의 컨텍스트 스택이 저장된 후 프로세스 b로 넘어가고, 프로세스 c로 넘어갈 때도 동일한 작업이 이루어지는 것으로 이해했습니다 -> 여기서 궁금한 점은 작업이 다시 전환되는 '순서'인데요 스택의 경우 후입선출의 작업 순서를 가지는 것으로 알고있습니다. 따라서 a -> b -> c 순서로 프로세스 실행이 전환된다면 프로세스 c의 작업을 마쳤을 경우 프로세스 b로 돌아갈 수 밖에 없는 건가요? 만약 a로 돌아간다면, 이전 a 작업데이터가 b 스택 이전에 존재하니까 이전에 저장했던 데이터를 사용할 수 없어서 처음부터 작업을 진행해야 하는건가요?

와롤러6개월 전

OS가 프로세스의 컨텍스트를 저장하는데 스택을 사용하고 있지는 않습니다. 대신에 테이블과 같은 다른 자료구조를 사용하고 있습니다. 잘 생각하셨습니다. 스택이라면 A 프로세스의 컨텍스트를 꺼내기 위해서 B까지 꺼내야 하는 상황이 벌어지겠죠. 작업이 전환되는 순서는 OS의 스케줄링 알고리즘에 의해 결정 됩니다. 따라서 A 프로세스로 갈지 B 프로세스로 갈지 예측하기는 어렵습니다. 그 때 그 때 메모리의 상황, CPU의 상태에 따라 달라집니다. 제가 강의에서 표현하기로는 '오래 걸리는 것 같으면' 컨텍스트 스위칭이 일어난다고 했는데 이처럼 너무 많은 시간을 혼자 점유하고 있으면 스위칭이 일어나기도 하고요. 좀 더 높은 우선순위의 작업이 생기면 '인터럽트'가 발생하면서 스위칭이 생길 수도 있습니다. 더 자세한 것을 공부하고 싶다면 운영체제의 '스케줄링 알고리즘'에 대해서 알아보시면 좋습니다.

익명 두더지6개월 전

4. 금일 다룬 promise, async/await은 비동기를 운영체제에게 전달하여 하드웨어에게 인식시킬 수 있는 문법으로, 운영체제/하드웨어의 비동기 처리방식을 활용해 웹 프로그램에서도 비동기를 구현할 수 있도록 한다. 5. 이로인해 서버 컴퓨터를 메모리를 감소시키는 등 자원 효율성을 증진시키는 효과를 가져온다. 이렇게 정리를 하였는데, 맞게 이해를 한걸까요?

와롤러6개월 전

아래 3번까지의 거의 잘 이해하신 것 같습니다. 네 맞습니다. 4는... 약간의 수정만 있으면 될 것 같습니다. async/await 키워드와 promise는 node의 인터프리터가 실행되면서 기계어로 바꿀 것이고 이를 최종적으로는 CPU가 실행하게 됩니다. 운영체제가 코드에 어떤 변형을 가하지는 않습니다. 다른 언어, C/C++ 같은 경우 이런 코드 변환 과정을 '컴파일'이라고 하고 '컴파일러'라는 프로그램이 따로 있습니다. node는 이와 비슷한 개념을 '인터프리터'라고 합니다. 5의 경우에도 맞는 말입니다. 비동기 처리를 지원하게 되면서 메모리 사용량도 줄어든 것이 사실이긴 합니다. 그러나 그 덕분에 CPU가 덜 바쁘게(?) 됐다는 사실도 있습니다.

와롤러6개월 전

다시 찾아보니 node를 엄밀하게 '인터프리터'라고 하지는 않는것 같습니다. 최근의 언어들은 컴파일과 인터프리터 개념의 경계가 점점 흐릿해 지고 있거든요. JIT라는 기법도 있고요... 아직 이 부분까지는 엄격 근엄 진지하게 따지지 않으셔도 될거 같습니다.