목록OS (4)
개발일지

9장. 운영체제 시작하기9-1. 운영체제운영체제란?실행할 프로그램에 필요한 자원을 할당하고 올바르게 실행되도록 도와주는 프로그램관리할 자원별로 기능이 나누어져 있음 (CPU 배분, 메모리 적재 등) 운영체제도 프로그램이다. 즉 메모리에 할당되어야 함!커널 영역: 운영체제가 사용하는 메모리 영역사용자 영역: 응용프로그램이 사용하는 메모리 영역 9-2. 커널커널(Kernel)?운영체제가 제공하는 기능 중 핵심 서비스를 담당하는 영역운영체제마다 제공하는 서비스가 다를 수 있지만, 공통적으로 필요한 필수적인 기능을 담당예시로 사용자 인터페이스는 운영체제 기능이긴 하지만 커널 기능은 아니다. 이중모드CPU가 명령어를 실행할 때 두 가지 모드로 구분하는 방식커널 모드: 운영체제 서비스를 제공 받을 수 있는 실행..
개요프로세스 동기화를 공부하면서 Node.js에서도 동기화 기법이 적용되는지 궁금해졌다. JS는 싱글스레드 기반인데 async-mutex, async-sema와 같이 마치 동기화를 제공하는 듯한 패키지가 존재했기 때문이다. 결론부터 말하자면 JS는 “비동기 작업의 경쟁 조건(race condition)”이 발생할 수 있다. 일반적인 멀티스레드 동기화 개념과는 조금 다르지만 이 개념을 비동기 작업에 적용한 것이다. 이번 글에서는 프로세스 동기화 개념에 대해 간략히 알아본 뒤 JS의 동기화는 어떻게 다른 지 비교해보고 직접 구현까지 해보고자 한다. 프로세스 동기화여러 프로세스가 협력하는 작업이 있을 때 이 프로세스들은 동시다발적으로 실행되면 안된다. 이를 방지하기 위해서는 동기화가 필수적으로 이뤄져야한다. ..
프로세스 (Process)프로세스는 “실행 중인 프로그램”이라고 불린다. 프로그램은 무엇일까? 우리가 사용하는 카카오톡, 크롬, 워드 모두를 프로그램이라고 볼 수 있다. 우리는 카카오톡을 사용하기위해 바탕화면에 있는 아이콘을 더블클릭하여 실행시킬 것이다. 이때 카카오톡 그 자체를 프로그램, 더블클릭하여 실행된 상태를 프로세스라고 볼 수 있다. 다시말해 프로그램은 하드디스크에 존재하다가 실행 시키는 순간 메모리로 적재되고 “프로그램이 메모리에 적재된 상태”를 프로세스라고 부른다.작업 관리자에 들어가면 프로세스를 직접 확인해볼 수 있다. 보통 프로세스 하나만 실행시키는 사람은 없을 것이다. 인터넷도 하다가 카카오톡도 하다가 동시에 음악을 듣기도 한다. “동시에”라고 표현하기는 했지만 실제 동시에 실행되는 것..

개요프로세스 메모리 영역은 크게 코드 영역, 데이터 영역, 스택 영역, 힙 영역으로 구성된다. 그중 힙 영역은 동적 할당된 메모리를 관리하는 영역으로 사용자가 명시적으로 메모리를 할당하고 해제 해야한다. 반환하지 않을 경우 메모리 누수와 같은 문제가 발생할 수 있다. 그러나 Node.js는 가비지 컬렉션 기능을 제공하므로 메모리를 수동으로 관리하지 않아도 된다. 그렇다면 이 가비지 컬렉션이란 무엇일까? 가비지 컬렉션 (Garbage Collection)가비지 컬렉션(GC)이란 동적 할당된 메모리에서 더 이상 사용되지않는 객체를 자동으로 식별하고 해제하는 기법이다. 본론에 들어가기 전에 GC 알고리즘으로 어떤 것들이 있는지 알아보자. GC 알고리즘으로는 크게 참조 횟수 계산 방식(Reference cou..