본문 바로가기

CS Study/Operating System

(5)
메모리 관리 - 메모리 단편화, 페이징, 세그멘테이션 메모리 단편화 RAM 에서 메모리의 공간이 작은 조각으로 나뉘어져 사용 가능한 메모리가 공간이 실제로는 충분히 존재하지만 사용이 불가능한 상태. 내부 단편화 : 메모리를 할당할 때 프로세스가 필요한 메모리보다 더 큰 메모리가 할당되어 프로세스에서 사용하는 메모리 공간이 낭비되는 현상. 예를 들어, 메모리를 할당하는 최소 블록 크기가 10K인데 프로세스는 5K만 필요한 상태면 5K가 낭비된다 외부 단편화 : 메모리가 할당 및 해제 작업을 반복하여 작은 메모리가 띄엄띄엄 존재할때 사용하지 않는 메모리가 존재하는 경우로총 메모리 공간은 충분하지만 실제로 사용이 불가능한 상태. 메모리 단편화 해결 방법 1. Paging 기법 메모리 공간이 연속적으로 할당되어야 한다는 제약조건을 없애는 메모리 관리 전략. 프로세..
병행 프로세스와 동기화 - 병행성 vs 병렬성, 상호 배제, 세마포어, 뮤텍스 프로세스 동기화의 필요성 어떤 프로세스가 먼저 공유 자원에 접근하느냐에 따라 실행 결과가 달라질 수 있기 때문에 공유 자원의 일관성을 유지하기가 어렵습니다. 이를 해결하기 위해 프로세스 동기화가 필요합니다. 1. 병행성(Concurreny) vs 병렬성(Parallelism) 1.1 병행이란? 동시에 실행되는 것처럼 보이는 것입니다. 자세하게는 메모리에 다수의 프로세스가 같이 존재한다는 의미입니다. 실제 실행 과정에서 자원을 공유하고 있을 경우 공유된 자원을 서로 언제 사용할것이지와 같은 복잡한 관리가 필요합니다. 병행 처리는 다음과 같은 문제점이 있습니다. 전역 자원의 공유가 어렵다. OS가 자원을 최적으로 할당하기 어렵다 프로그래밍 오류를 찾아내는 것이 어렵다. 1.2. 병렬이란? 실제로 동시에 작업..
Thread란? Multi-Thread, Multi-Tasking, Multi-Processing 1. Thread란? 프로세스 내에서 실행되는 여러 흐름의 단위를 뜻합니다. 즉, 프로세스가 할당받은 자원을 이용하는 실행의 단위입니다. 이 각각의 스레드는 서로 하는 일은 서로 다르지만 스레드가 모여 하나의 프로세스를 구성합니다. 프로세스와 비교했을때 프로세스는 CPU자원이 부여된 자원의 소유자이고, 스레드는 스케줄링의 단위로서 존재합니다. 하나의 프로세스에 속한 각각의 스레드들은 프로세스가 가지는 자원을 공유하면서 자신의 실행환경에서 현재의 실행위치와 스택, 레지스터 값들을 따로 가지게 됩니다. 스레드는 프로세스내에서 각각 Stack만 할당받고 Code, Data, Heap 영역은 공유합니다. 한 프로세스내부에서 프로세스들은 주소공간이나 자원(Heap)과 같은 영역을 공유하면서 실행됩니다. Code,..
프로세스란? PCB, Process State, Process Life Cycle 1. Process OS입장에서 보면 실행되어야 하는 프로그램들에게 시스템자원을 적절히 분배해줘야 하는 책임이 있습니다. 이때 task 단위로 서로 명확하게 구분이 되어야 하는데 이것을 프로세스라고 지칭합니다. 실행중인 프로그램을 의미합니다. 즉 메모리위에 올라와 실행되고 있는 프로그램의 인스턴스로 OS로부터 정상적인 실행을 위해 필요한 환경을 부여받은 능동적인 존재입니다. OS로부터 시스템 자원을 할당받는 작업의 단위이기도 합니다. 예를 들어, 크롬 브라우저가 두 개가 실행되면 두 개의 크롬 프로세스가 실행되는 것입니다. 1.1 Process Control Block (PCB) 프로세스 하나가 만들어진다는 것은 곧, 그 프로세스에 대한 모든 정보를 나타내는 PCB 하나가 만들어진다는 말과 같습니다. O..
Interrupt 란? 인터럽트 프로세스, 인터럽트 우선순위 1. 인터럽트 CPU당 하나의 Task(Process/Thread)만 실행할 수 있기 때문에, 사용자에게 멀티 태스킹을 지원하기 위해서는 Task를 Switching하며 구동되어야 합니다. 이때 Task간 Switching하는 과정에서 발생하는 요청을 인터럽트라고 합니다. 또는 CPU가 프로그램을 실행하고 있을 때, 입출력 장치나 예외상황이 발생하여 처리가 필요할때 프로세서에게 알려 처리할 수 있도록 하는 것을 의미합니다. I/O Device와 커뮤니케이션 저장매체에서 데이터 처리를 완료한뒤 프로세스를 깨워야할때 인터럽트가 필요합니다. (block -> ready) 예외 상황 핸들링 0으로 나누려는 연산의 경우 알 수 없기 때문에 인터럽트가 필요합니다. 이때는 Process를 Kill 해줍니다. 타이머 ..