ProcessProcess는 executing program code, open files, pending signals, internal kernel data, process state, memory address space와 함께 하나 이상의 threads of execution, data section (global variable) 을 가진다.Thread는 process의 activity 단위이다. 하나의 thread는 고유의 program counter, process stack, process register 등을 가진다. Linux의 경우 실행 단위는 thread이고 process와 구별하지 않는다. Process Descriptor Task Listprocess들을 담은 circular ..
OS and KernelsUser interface는 outer portion, kernel은 inner portion을 담당함Processor의 세 가지 상태:user-space에서 process의 user code를 실행 중kernel-space에서 process context로 특정 process를 대신하여 실행 중application이 system call을 실행하는 경우, kernel은 process context 상에서 kernel space에 진입하여 system call을 수행한다int 0x80 등으로 trap (interrupt) 발생시켜 kernel mode로 변경interrupt handler은 해당되는 system call handler routine으로 dispatch 시켜줌ker..
OS에서 제공하는 thread creation/control과 관련된 API에 대해서 살펴볼 것이다. (POSIX API) Thread Creation #include int pthread_create( pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg); thread: pthread_t 타입을 가르키는 포인터. 이것으로 thread와 상호작용을 한다. attr: thread가 가지는 attribute들을 가르킴. stack size, scheduling priority 등 start_routine: thread가 시작할 function의 pointer arg: start_routine에 필요한 a..

Thread Mutli-threaded program은 execution point가 여러곳이다. Thread는 process랑 정말 비슷한데, 한 가지 차이점은 thread의 경우 address space를 share한다는 점이다. thread의 state Program Counter (PC) private registers Process Control Block과 마찬가지로, 각 thread별로 Thread Control Block (TCB)이 존재하여 thread의 state를 저장해야한다. Context switch 당시 process와 마찬가지로 register들을 잘 저장해야 하지만 address space는 동일하므로 page table을 바꾸진 않는다. Thread별로 각자 routine들..

이번 글에선 Linux for Intel x86의 VM system에 대해서 다룬다. Linux Virtual Memory System Linux Address Space Linux 또한 VAX/VMS를 비롯한 modern OS와 비슷하게 virtual address space가 user spcae / kernel space로 이루어진 구조이다. 0 ~ 0xBFFFFFFF (3/4) 까지 user space, 0xC0000000 ~ 0xFFFFFFFF (1/4) 까지 kernel's virtual address space이다. kernel virtual address space는 두 가지 종류로 나누어진다. kernel logical address kmalloc()을 이용해 추가 메모리를 할당 대부분의 ..

이번 글에선 실제 VM system의 예시인 VAX/VMS system 예를 살펴본다. VAX/VMS Operating System VAX-11 minicomputer architecture는 DEC에서 소개된 아키텍쳐이다. 이 아키텍쳐는 VAX-11/780 등의 다양한 implementation으로 구현화되었다. 이 시스템들의 OS는 VAX/VMS (또는 그냥 VMS)라 부른다. Memory Management Hardware address space 32bit, 512byte pages, 23 bit VPN, 9 bit offset, (VPN의 상위 2 bit는 segmentation 번호) segmentation + paging hybrid 아래 반은 process space / 위의 반은 syst..
문제: physical memory에서 swap out 하는 page를 어떤식으로 고르냐에 따라서, 이후에 cache miss 하는 횟수가 달란진다. 해법: 상황에 맞게 좋은 replacement policy를 찾아보기. Average Memory Acces Time (AMAT) = (Time cost of accessing memory) + (cache miss probability) * (Time cost of accesing disk) Replacement Policies Optimal 현재 시점부터 가장 늦게 access 되는 page를 찾아 evict FIFO 별로인 경우가 많음 Belady's Anomaly cache size가 증가할 때 오히려 cach hit rate가 줄어드는 경우가 있음..
문제: multiprogramming에서 여러 프로세스들이 존재하면, 이들이 총 할당받은 page들은 physcial memory size를 넘어가기 쉽다. 그리고 각 프로세스 개별로도 large address space를 제공하면 좋지만, physcial memory size는 한계가 있다. 해법: hard disk drive에 공간을 마련하여, physical memory에서 페이지들을 저장할 수 있게끔 한다. Swapping Mechanisms Swap Space physical memory의 page들을 저장해 두고 필요할때 다시 가져오는 것을 swapping이라고 한다. (page size unit으로 저장해둔다.) disk에 swapping을 위해 마련해둔 공간을 swap space라고 부른다..