OS 8

운영체제의 이해 10장: 데드락 문제 및 그 해법 (2023.05.28)

동기화는 공유 데이터의 일관성을 위해 프로세스들 간에 실행 순서를 적절히 유지할 수 있도록 해주는 것이다. 하지만 상호배제의 조건을 만족시켰어도 데드락의 문제가 발생할 수 있다. 데드락은 죽어있는 잠김 상태, 전혀 풀릴 수 없는 잠김 상태를 의미한다. 즉, 프로세스의 관점에서 본다면, 어떤 집합에 속한 프로세스들 모두가 대기 상태로서 존재하는데 이들이 기다리는 이벤트가 이 집합 속의 다른 프로세스에 의해서 발생해야 할 때를 말한다. 예를 들어 신호등이 없는 사거리 상황에서 모두 앞이 막혀 진행하지 못할 때가 그렇다. 자원의 요청과 할당을 도식화로 표현한 것이 자원 할당 그래프다. 자원은 공유 데이터를 말하는데 그래프에서는 프로세스와 함께 노드로 표현하고 특정 자원에 대해 여러 개의 종류가 존재할 수 ..

OS 2026.03.13

운영체제의 이해 9장: 프로세스 간의 동기화 (2023.05.25)

공유 메모리나 프로세스들 간 공유하고 있는 데이터 등은 내용이 변경되는 작업이 수시로 이루어진다. 이 과정에서 데이터가 예상치 못한 내용으로 변경되었을 때 공유 데이터의 일관성이 유지되지 못한다고 말한다. 공유 데이터의 일관성을 유지하기 위해 프로세스들 간에 실행순서를 적절히 유지하도록 하는 동기화를 해 준다. 변수의 값을 변경하는 간단한 작업에도 이 문제를 확인할 수 있는데, 이것은 CPU가 하나의 명령어로 처리할 수 없기 때문에 여러 개의 명령어를 사용하면서 문제가 발생한 것이다. 운영체제 커널 내부에서도 문제가 발생하는데, 먼저 시스템 콜 함수의 호출로 커널 데이터를 수정하는데 문맥교환이 되면서 이 프로세스가 같은 시스템 콜 함수를 요청하며 커널 데이터를 수정하는 경우다. 또는 커널 데이터를 수정하..

OS 2026.03.13

운영체제의 이해 8장: 저장장치 입출력 및 스케줄링 (2023.05.16)

하나의 디스크 드라이버에는 하나 혹은 여러 장의 디스크가 내장되어 있는데, 디스크는 여러 개의 실린더로 이루어져 있다. 실린더는 다시 여러 개의 트랙으로, 하나의 트랙은 여러 개의 섹터로 이루어져 있다. 디스크의 기본 단위는 최소 단위인 섹터들을 일정하게 묶어 놓은 하나의 논리적인 단위인 블록으로 정의한다. 따라서 디스크 용량은 전체 블록 수 x 블록 당 섹터 수 x 섹터 당 바이트 수, 다시 풀어서 정리하면, 전체 실린더 수 x 실린더 당 트랙 수 x 트랙 당 섹터 수 x 섹터 당 바이트 수로 계산할 수 있다. OS 내부적으로는 디스크 영역을 관리할 때 논리적 블록 번호만을 사용한다. 따라서 디스크 제어기를 통해 입출력 작업을 실시할 때 이 논리적 블록 번호로부터 물리적 디스크에 대응되는 실린더, ..

OS 2026.03.13

운영체제의 이해 7장: 파일 관리 (2023.05.10)

컴퓨터의 저장매체로는 대표적으로 디스크가 있는데, 이 디스크는 다시 몇 개의 파티션으로 구별하여 사용한다. 하나의 파티션은, 각 파일에 대한 속성을 기록하여 파일들의 목록을 나타내는 파일목록 영역과 각 파일 별 데이터를 기록하는 파일데이터 영역으로 구분된다. 파일 속성이라 하면 파일들의 관리를 위해 이름, 파일종류, 보호, 크기, 데이터블록에 대한 정보를 추가로 기록한 것이다. 파일은 사용자의 정보를 저장하는 단위이다. 파일과 실제 저장매체에 기록된 부분과의 매핑은 운영체제가 담당하는데 이는 파일시스템으로 구체화된다. 파일시스템은 디스크에 체계적으로 파일들을 기록하고 관리하는 방식을 지칭하는데 하나의 파티션에는 이러한 파일시스템 하나가 적용된다. 파일에 대한 작업은 읽기, 쓰기, 실행 등이 있는데 시스..

OS 2026.03.13

운영체제의 이해 4장: CPU 스케줄링 (2023.04.12)

프로세스는 크게 계산 작업과 입출력 작업을 실행하는데, 입출력 작업을 진행하는 동안 대기하므로 그 시간에 계산 위주의 프로세스들을 처리하며 진행된다. 이 과정이 스케줄러에 의한 스케줄링 작업이라 볼 수 있다. 즉 CPU의 활용률을 높이기 위해 ready 상태의 프로세스들 중에서 하나를 선택하는 것이다. 스케줄러는 일반적으로 커널 내에 함수로서 구현되어 있다. 스케줄러는 실행되는 주기의 길이에 따라 단기, 중기, 장기 스케줄러로 구분할 수 있다. 단기 스케줄러는 일반적인 CPU 스케줄러로서 5ms-100ms 주기로 빈번하게 호출되어 신속히 이루어진다. 이 경우 스케줄링은 현재의 running 프로세스가 다른 상태로 변할 때나 임의의 프로세스가 ready로 변할 때 실행된다. 중기 스케줄러는 메모리 용량이..

OS 2026.03.13

운영체제의 이해 3장: 프로세스 관리 (2023.03.31)

프로세스는 해당 프로그램에 표현된 내용대로 실제 실행을 하는 능동적인 개체이다. 이는 생성-실행-종료의 순서로 처리되며 생성할 때는 셸이나 GUI를 제공하는 프로세스에서 프로세스 생성을 요청하는 시스템 콜 함수를 통해 이루어진다. 종료 시에도 같다. 필요에 따라 프로세스가 여러 프로세스를 생성할 수 있는데 이때는 부모-자식 관계를 이루는 구조를 갖는다. 프로세스는 일정한 메모리 영역을 확보한 후에 프로세스가 실행되어야 할 내용이 기록되어야 한다. 메모리에서는 프로세스 영역으로, 기계어 코드가 적힌 코드 영역, 전역변수와 실행 중 메모리 할당 요청 등을 통해 할당받은 메모리들을 포함한 데이터 영역, 함수 호출 과정에서 매개변수나 지역변수를 저장하기 위한 스택 영역이 있다. 프로세스의 상위 개념이라 할 ..

OS 2026.03.13

운영체제의 이해 2장: 컴퓨터 구조와 어셈블리 언어 (2023.03.23)

중앙처리장치인 CPU는 메모리에 적재된 명령어를 실행한다. 데이터 입출력 작업을 위해 해당 장치 제어기로 명령을 전달하는데 제어기가 이를 확인하고 작업을 수행한다. CPU가 작업의 결과를 확인하는 방식은 반복적으로 작업 완료 여부를 확인하는 폴링 방식이 아닌, 작업을 수행한 제어기가 작업 완료 시점에 CPU로 인터럽트 신호를 보내는 인터럽트 방식을 주로 채택한다. 제어기가 직접 메모리에 접근하여 읽기, 쓰기 작업을 수행하는 장치를 DMA 제어기라고 한다. CPU는 명령어를 실행할 때 OS 부분과 프로세스 부분이 실행될 때를 구분해 권한 차이를 두는데 이는 각각 커널 모드와 유저모드로 설명된다. 전자에서는 시스템 전체의 메모리와 하드웨어에 접근 가능하지만 후자는 일정 메모리 영역에 한해 권한이 제한된다...

OS 2026.03.13

운영체제의 이해 1장: 운영체제의 이해를 위한 기초 (2023.03.15)

운영체제(OS)는 컴퓨터 시스템의 자원들을 효율적으로 사용하기 위해, 또 사용자가 편리하고 안전하게 작업을 할 수 있도록 지원하는 프로그램이다. 즉, 사용자가 원하는 응용 프로그램의 실행을 돕는데, 그 과정에서 하드웨어 제어 등과 같은 기능들을 처리한다. 운영체제를 사용하는 방식은 저마다 다를 수 있는데, 대표적으로 사용자가 직접 키보드 입력을 통해 운영체제에 작업 실행을 요청하는 명령 해석기와 마우스 입력을 통해 작업 실행을 처리하는 그래픽 사용자 인터페이스(GUI) 방식이 있다. 명령 해석기의 예시는 UNIX의 셸이 있다. 운영체제를 구성하는 요소로는 여러 프로세스들 중 어떤 것을 실행할 지 선택하는 스케줄링 등의 프로세스 관리, 프로세스 별 메모리 할당 및 회수를 담당하는 메모리 관리, 컴퓨터 시스..

OS 2026.03.13