오몰내알 데엔

CS 지식/운영체제

운영체제 Ch11~15 - 스토리지 관리

Mass Storage Structure Mass Storage란 Mass Storage: 비휘발성, 세컨더리 스토리지라고 불리고 HDD, SSD가 여기에 해당한다. HDD 스케줄링 - seek time(헤드가 특정 섹터를 찾아가는데 걸리는 시간)을 최소화 - bandwidth(시간당 한 번에 전송할 수 있는 용량)을 최대화 FIFO 스케줄링 가장 기본적인 스케줄링으로 선입선출 구조를 따르며, 효율적이지는 않다. SCAN 스케줄링 양방향으로 탐색하는 방법. 즉, 왕복으로 탐색하는 방법. C-SCAN 스케줄링 SCAN 방식을 개선한 방법으로 단방향으로만 탐색한다. 끝까지 탐색을 마치면 다시 처음으로 돌아가는데 그때는 데이터를 탐색하지 않는다. 부트 블록 - 부트스트랩 프로그램: 각각의 장치에 이르는 시스템..

CS 지식/운영체제

운영체제 Ch10 - 가상 메모리

개념 가상 메모리란 프로세스를 메모리에 완전히 다 올리지 않아도, 즉 프로그램이 실제 메모리 용량보다 더 커도 실행될 수 있게 하는 기술으로 필요할 때마다 물리 메모리에 매핑시켜 사용한다. 가상 메모리 공간 논리적인 관점으로 프로세스가 메모리에 저장되는 공간. 실제로는 아니지만 연속적인 메모리로써 표현하게끔 하여 프로그램 실행이 굉장히 간편해진다. page sharing 가상 메모리는 여러 개의 프로세스가 파일이나 메모리를 공유할 수 있게끔 한다. 이를 page sharing이라 한다. Demand Paging Demand Paging 기본 개념 1. 하드 디스크에서 메모리에 프로세스를 로드한다. 2. 한 번에 프로세스를 로드하는 것은 비효율적이므로 요청할 때마다 페이지 단위로 로드한다. - valid:..

CS 지식/운영체제

운영체제 Ch9 - 메인 메모리

배경 메모리의 구성 - 각각의 주소를 가지고 있는 바이트의 배열 - CPU는 메모리로부터 명령어를 패치하거나, 저장할 수 있다. 메모리 공간 프로세스는 각자의 메모리 공간을 가지고 있다. 즉, 프로세스별로 독립된 메모리 공간을 가지고 있어야 한다는 뜻이다. 메모리 보호를 위해 base register와 limit register를 가진다. 메모리 보호는 CPU 하드웨어가 유저모드에서 주소를 생성해낼 때마다 매번 비교를 하며 이루어진다. 새로운 주소가 base register보다 크거나 같고, base+limit register보다 작을 때만 정상적으로 할당할 수 있게끔 한다. 논리 주소 공간: 유저 프로그램에 의해 만들어지는 메모리 주소 물리 주소 공간: 논리 주소 공간에 매핑되는 실제 데이터가 저장되는..

CS 지식/운영체제

운영체제 Ch8 - 데드락

데드락이란? 데드락: 자원을 다른 대기 스레드가 점유하고 있어서 대기 스레드가 다시는 자신의 상태를 변화하지 못하는 상태. 데드락의 특성 4가지 필수조건 1. 상호배제 2. 점유와 대기: 스레드가 실질적으로 자원을 점유하고 있어야 한다. 3. 비선점: 자원이 선점 불가능할 때만 데드락이 일어날 수 있다. 4. 원형대기 RAG(Resource Allocation Graph) RAG: 데드락을 정확히 표현하기 위해 나타낸 directed graph. - request edge T -> R로 나타내며 스레드가 자원을 요청한다는 뜻이다. - assignment edge R -> T로 나타내며 자원을 할당받은 상태를 나타낸다. 아래의 그림과 같이 RAG를 그려봄으로써 데드락을 시각적으로 쉽게 확인할 수 있다. 하..

CS 지식/운영체제

운영체제 Ch7 - 동기화 문제의 예시

고전적인 동기화 문제 3가지 Bounded Buffer 생산자 소비자 문제를 다시 생각해보자. 생산자는 full 버퍼를 만드는 데, 소비자는 empty 버퍼를 만드는 데 각자의 목표가 있다. 여기서 공유 데이터에 접근하기 위해서는 mutex를 통해 버퍼에 하나의 프로세스만 접근하도록 해야한다. 아래 코드에서 볼 수 있다시피 각각의 프로세스는 wait으로 버퍼가 다 비워지거나 채워질 때까지 기다리고 mutex로 한 번에 한 프로세스만 접근할 수 있도록 한다. 그리고 프로세스가 다 끝나면 signal을 통해 프로세스가 다 실행되었다는 것을 알린다. Readers Writers 프로세스가 동시에 실행되고 있는 상태를 자세히 들여다보니, 읽기만 계속 실행되는 것과 쓰기만 계속 실행되는 것처럼 편향적으로 실행되는..

CS 지식/운영체제

운영체제 Ch6 - 프로세스 동기화(2)

뮤텍스와 세마포어 뮤텍스 락 임계 구역 문제를 조금 더 하이레벨에서 해결하기 위해 Mutex Lock을 통해 상호배타만이라도 해결해보도록 한다. 임계 구역에 들어가려면 열쇠를 가지고 다시 나올 때면 이를 반납하도록 한다. 가장 간단한 방법이다. 여기서 더 발전하여 세모포, 모니터, 라이브니스와 같은 도구들이 나오게 되었다. 지금은 가장 기본이 되는 뮤텍스 락을 알아보자. mutex는 mutual exclusion의 줄임말로 상호배제를 통해 임계구역을 보호하고 경쟁 상태를 막는다. 이것을 사용하기 위해서는 acquire(), release(), available(boolean)만 있으면 된다. 참고로 이 함수는 atomical하게 구현하여야 한다. 하지만 이렇게 간단하게 구현하면 하나의 문제가 생기는데 이..

CS 지식/운영체제

운영체제 Ch6 - 프로세서 동기화(1)

배경 공유 데이터에 접근할 때 생기는 문제에는 data inconsistency가 있다. 데이터를 동시에 접근할 때 문맥 교환으로 인해 생기는 문제인데 예시를 통해 살펴보도록 하자. int sum; void run void param) { int i; for (i = 0; i < 10000; i++) sum++; pthread_exit(0); } int main() { pthread_t tid1, tid2; pthread_create(&tid1, NULL, run, NULL); pthread_create(&tid2, NULL, run, NULL); pthread_join(tid1, NULL); pthread_join(tid2, NULL); printf("%d\n", sum); } 위의 코드에서 두 개의 ..

CS 지식/운영체제

운영체제 Ch5 - CPU 스케줄링

CPU 스케줄링 개념 CPU 스케줄링은 멀티 프로그래밍된 운영체제에서는 필수이다. 보통 프로그램을 동작시키면 I/O bound가 CPU bound보다 훨씬 많은 일이 빈번하다. 이러한 상황에서 CPU 효율을 높이기 위해 CPU bound를 조금이라도 더 높이려는데에 스케줄링은 매우 중요한 과정이라고 할 수 있다. CPU 스케줄링이란 대기 상태에 있는 프로세스 중에 어떤 프로세스에 CPU를 할당해줄 것인가를 정하는 과정이다. 다음 프로세스를 선택하는데는 다양한 방법이 있는데, 크게는 FIFO와 우선순위 큐를 이용하는 방법이 있다. 이는 뒤에서 여러 스케줄링 알고리즘을 배우며 알아보도록 하자. 스케줄링에서는 선점형과 비선점형이라는 또 다른 중요한 개념이 있다. 비선점형은 다른 프로세스가 다 끝날 때까지 빼았..

CS 지식/운영체제

운영체제 Ch4 - 스레드

스레드란? 앞서 프로세스는 싱글 스레드로 도는 프로그램이라고 하였다. 하지만 만약 프로세스 안에서 또 작업을 여러 개로 나누어 작동시킨다면 어떨까? 훨씬 작업이 빨라지지 않겠는가? 이러한 발상에서 착안된 것이 바로 스레드이다. 스레드는 가벼운 프로세스로서 실제적으로로 CPU를 점유하는 단위이다. 이제는 여러 개의 스레드를 두어 프로세스를 실행시키기 때문에 실제로 CPU를 점유하는 가장 작은 단위는 스레드라고 할 수 있다. 이 또한 똑같이 고유의 TCB를 가지고 있다. 당연히 여기에는 여러 장점이 있다. 우선 프로세스가 다 끝날 때까지 기다리지 않고 비동기적으로 처리할 수 있고, 위의 그림처럼 기본적인 자원을 공유하기 때문에 훨씬 경제적이다. 또한 여러 개의 작업으로 병렬처리가 가능해진다. 사실 우리는 멀..

CS 지식/운영체제

운영체제 Ch3 - 프로세스(2)

프로세스간 통신(IPC) 프로세스가 동시에 실행될 때 프로세스 간 서로 데이터를 공유하지 않고 독립적으로 작동하면 별 문제가 없겠지만 데이터를 공유한다면 문제가 생길 것이다. 이렇게 프로세스 간 통신하는 방법을 IPC(Inter-Process Communication)이라고 한다. IPC를 통해 협력 프로세스는 서로 데이터를 주고 받을 수 있다. Shared-Memory IPC 모델은 Shared-Memory와 Message-Passing으로 나눌 수 있다. 잠깐 Shared-Memory를 살펴보기 전에 알아두어야 할 개념이 있는데, 이러한 협조 프로세스에는 항상 생산자-소비자 문제가 따라온다. 단어에서 볼 수 있듯이 데이터를 생산하는 생산자와 그 데이터를 소비하는 소비자가 있다는 개념인데, 웹서버가 H..

오몰내알
'CS 지식' 카테고리의 글 목록