나도 공부한다/운영체제12 11. Virtual Memory Demand Paging 코드 중 대부분은 한번 쓰이거나 쓰이지 않는다. 이런게 메모리 공간을 차지하여 낭비하고 있다. OS는 이런 코드에게 메모리를 안 주고 싶어한다. 크도 전체가 항상 동시에 로드되어있을 필요가 없다는 입장이다. 그런데 프로그래머는 자신이 짠 코드가 항상 메모리에 있길 원한다. 예를 들어, 100번에 한번 걸릴까말까 하는 에러 코드가 있다고 하자. 메모리는 이 에러코드는 메모리를 낭비하고 있다고 생각한다. 하지만 이 코드에게 메모리를 안 내어줄 경우 에러 상황이 오면 대처할 수 없게 된다. 프로그래머는 분명히 에러코드를 짰는데 말이다. 이를 해결하기 위해 전체 중 자주 쓰이는 일부만 메모리에 로드한다. 그러다가 로드 안된 부분을 실행하려고 하면 OS가 급하게 그 코드에게 메모리를 할당.. 2021. 6. 6. 09. Main Memory 메모리 할당 기법에는 Contiguous(가장 기본적)과 Multiple partition이 있다. 이때 발생하는 Swapping, Fragmentation 문제를 알아둬야한다. Main Memory 메모리는 데이터를 저장하고 불러오는 장치이다. 컴퓨터는 RAM을 메인메모리로 쓰고 있고 RAM을 구현하는 기술 중 하나가 DDR이다. 이렇게 하드웨어는 오랫동안 변화가 없었다. 메모리 abstraction은 physical address space를 말한다. 메모리라는 디바이스는 abstraction 하기가 아주 쉽고 간단하다. 다른 회사의 메모리라고 해도 별 차이가 없기 때문이다. 메모리는 write(저장), read(읽기) 이 두가지 오퍼레이션만 할 수 있다. 이 기능들을 사용하려면 꼭 주소를 알아야하는.. 2021. 6. 6. 08. CPU-Synchronization(2) Bounded-Buffer Problem 한정된 양의 버퍼가 있고 이 버퍼에 대해 생산자와 소비자가 버퍼에 아이템을 넣는 동작, 꺼내오는 동작을 하는 모델. 하나의 생산자 or 소비자가 버퍼에 접근하려고 할때 다른 생산자 소비자는 접근하면 안된다. 한 순간에 한번만. 버퍼가 가득 차있을때는 producer가 접근 불가하고 버퍼가 비어있을때는 consumer이 접근 불가능하다. 버퍼는 bool형 1차원 배열로 선언하고 not used로 초기화해준다. 생산자는 not used인 index를 used로 바꾼다. 소비자는 used인 index를 not used로 바꾼다. 문제 해결을 위한 세마포어 Empty(버퍼 내에 저장할 공간이 있음을 표시 / not used인 엔트리가 n개 있다는 뜻으로 n으로 초기화) .. 2021. 6. 6. 07. CPU: Synchronization 공유하고 있는 하나의 버퍼를 보면, 누구는 생산을 해서 넣고 다른 누구는 소비를 해서 거기에서 꺼낸다. 버퍼 안의 데이터 수를 카운터라는 변수로 추적하여 생산을 하고 꺼낸다. (consumer-producer problem) 프로세스와 consumer이 동시에 진행된다고 봐도 되고 하나의 프로세스에서 consumer, process가 OS에 의해 계속 context switching되며 번갈아가며 스케줄링한다고 봐도 됨. Race Condition 두 프로세스가 공유자원을 놓고 경쟁하는 상황을 말한다. (다른 프로세스와 같이 쓰는 변수를 사용하는 등) counter 변수는 메모리에 적재되어있다. CPU가 이 연산을 하기 위해 레지스터로 counter 값을 가져온다. 이후 레지스터에 있는 counter 값.. 2021. 6. 5. 06. CPU-IPC IPC란? 프로세스간에 정보를 주고 받는 것. IPC를 위해 OS는 Socket, Remote Procedure Calls, Pipes 같은 IPC 메커니즘을 제공한다. send, receive 두가지 시스템 콜만 제공한다. IPC의 필요성 ) 프로세스들은 서로 협업해야하는데 서로의 Address space가 다르고 기본적으로 시스템 안의 프로그램들은 격리되어있다. Communications Models IPC에는 signal, 메세지 패싱같은 여러가지 기법이 있고 모델은 크게 Message passing, shared memory 두 종류로 나뉜다. 두 모델의 차이점과 장단점을 알아보자. Message passing 메세지를 전달해달라고 요청받으면 커널은 분리된 별도의 자기 공간(우편함과 같은 역할)에.. 2021. 6. 5. 05. CPU Scheduling (2) 쓰레드란? ) 여러개의 프로세서가 있는 시스템에서 보다 병렬적으로 잘 수행할 수 있는 구조로 만드는 것. 멀티플 프로세서 시스템에서 어떻게 하면 더 효율적으로 동작할 수 있을까? 에 대한 고민 하나의 context는 하나의 프로세싱 유닛에서 동작해야함. 만약 내 컴퓨터에 프로세싱 유닛이 100개가 있어도 이 작업의 속도는 똑같음. 이 작업을 스레드 4개로 나눠서 4개의 CPU에서 동작시키면 최대 4배의 성능. 동기화(4개의 쓰레드가 협업)의 경우 4배보다 적은 성능을 보임 Multiple-Processor Scheduling 최근 컴퓨터는 대부분 프로세싱하는 코어가 하나가 아닌 여러개이다. 이전에도 서버 시스템은 멀티 프로세서를 사용했다. 그렇가면 이것을 어떻게 스케줄링 해야할까? 멀티 프로세서 등장배경.. 2021. 6. 1. 이전 1 2 다음