지난 상반기 System Programming 연재를 열심히 진행하였다. 이번 하반기에는 SP 연재에서 계속 언급했던 '운영체제(Operating System, 약칭 OS)'에 대해 자세히 학습해보고자 한다. SP가 운영체제 위에서 System Program을 구축
지난 포스팅에서 Operating System의 핵심을 구성하는 3대 Concept를 각각 Virtualization, Concurrency, Persistence라고 소개한 바 있다. 우리는 그 중 '가상화(Virtualization)'에 대해서 먼저 알아볼 것이
지난 포스팅 막바지에선 fork, wait과 같은 Process API POSIX의 System Call들에 대해 알아보았다. fork를 하면 Parent Process의 모든 Image가 Copy된다.즉, Child Process는 Parent Process의 복
지난 포스팅에선 fork와 exec을 분리한 이유에 대해 알아보았다. fork와 exec을 분리함으로써 I/O Redirection, File Descriptor 조정 등의 Setting 작업을 할 수 있게 하기 위함이라 했다. 이번 시간도 비슷한 이야기를 할 것이
Process Creation 과정을 돌이켜보자. (1) Load : OS는 Program Code를 Memory의 Process Address Space에 Load한다. 즉, Program이 Process가 되는 것이다.Program을 Load하기 전, Progr
지난 시간 소개한 개념은 Limited Direct Execution으로, CPU Virtualization 시 Performance 문제로 인해 Direct Execution을 도입했지만, 그로 인해 발생하는 Restricted Operations Accessin
지난 시간 우리는 Limited Direct Execution의 일환으로 도입된 Cooperative & Preemptive Approach에 대해 알아보았고, 그로 인해 가능해진 Process Context Switch에 대해 알아보았다. 그리고, Context
지금까지는 Single CPU 환경에서의 Scheduling에 대해 알아보았다. 하지만, Modern Computer는 대부분이 Multiprocessor 환경이다. 따라서, 우리는 Multiprocessor에서의 Scheduling도 고민해봐야한다.
지금까지 우리는 Process Virtualization에 대해 알아보았다. 이번 포스팅부터는 Memory Virtualization이다. 1.1 포스팅에서 언급했듯, 이 두 Virtualization이 모두 이루어져야 진정한 현대 OS가 탄생한다. 한편, 사실
지난 포스팅 막바지에 설명한 Memory Mapping에 대해 조금 더 알아보자. Memory Mapping의 가장 기본적인 원리는 Paging이다. Process의 Logical Address Space가 Page로 나뉘어 있고, Physical Address S
지난 포스팅에서 우리는 Memory Management와 관련한 API들에 대해 알아보았다. 이때, 이러한 API들에 있어서, Free한 메모리 공간을 어떻게 처리할 것인가는 상당히 중요한 문제이다. 좀 더 구체적으로 말하면, Dynamic Memory Alloca
지난 시간까지는 Logical Space에 있는 Free Region을 어떻게 할당하고 관리할 것인가 대해 알아보았다. 이번엔 Process가 Memory Loading을 어떻게 하는지 알아보자. Process를 Memory에 Load할 때 어떠한 일들이
이제 대망의 Paging 기법에 대해 알아보자. Paging은 지금까지 학습한 Process Loading Mechanism의 끝판왕이며, 현대 OS에서 실제로 사용하는 상용 기술이자 원리이다. 열심히 공부해보도록 하자. Paging은 사실 우리에게 어느 정도 익
현재 Paging에 관해 열심히 공부하고 있다. 잠시 멈추고, 우리가 이 개념을 공부하는 근본적인 이유를 복기해보자. Process Loading이다. 우리는 지금 Process의 Loading 방법에 대해 논하고 있다. Loading 시, 연속적인 할당은 Ext