OS 23

CPU 스케줄링

CPU 스케줄링 CPU 스케줄링은 다중 프로그램 운영체제의 기본이다. 운영체제는 CPU를 프로세스들 사이에서 교환함으로써 컴퓨터를 보다 생산적으로 만든다. CPU 스케줄러는 다양한 프로세스들과 각 프로세스의 스레드들이 CPU를 할당받을 수 있게 해주는 역할을 한다. 모든 프로세스는 실행되기 전에 스케줄링 되기 때문에, 이 CPU 스케줄링은 운영체제의 핵심이라고 할 수 있다. 1. CPU 입/출력 버스트 사이클(CPU I/O Burst Cycle) 프로세스 실행은 CPU 실행과 입/출력 대기의 사이클로 구성된다. 프로세스들은 이들 두 상태 사이를 교대로 이동 한다. 프로세스 실행은 CPU 버스트(Burst)로 시작된다. 뒤이어 입/출력 버스트가 발생하고 그 뒤를 이어 또 다른 CPU 버스트가 발생하며 이어..

스레드

스레드 (Thread) 스레드라고 하는 것은 프로그램 내부에 흐르는 맥, 흐름이라고 한다. 우리가 상위 언어 예를 들어 자바나 C로 프로그램을 작성할 때 메인 함수를 통해 각종 표현식이 돌아 프로그램이 끝이 나는 것을 “맥이 흐른다.”라고 한다. 기본적으로는 한 프로그램에 맥이 하나 흐른다. 하지만 한 프로그램에 2개 이상의 맥이 흐를 수 있는데 이것을 다중 스레드(Multi Thread)라고 한다. 하지만 다중 스레드는 실제로 맥이 빠른 시간 간격으로 스위칭을 진행하는 것이 여러 가지 맥이 동시에 진행되는 것이 아니다. 시간 간격이 매우 짧아 동시에 맥이 흐르는 것처럼 보이는 것이다. 현재 대부분의 프로그램은 다중 스레드이다. 예를 들어, 웹 브라우저를 들면 화면을 출력을 시켜주는 프로그램 스레드가 있..

메시지 전달 시스템(Message-Passing System)

메시지 전달 시스템 (Message-Passing System) 메시지 전달 시스템 방식은 동일한 주소 공간을 공유하지 않고도 프로세스들이 통신을 하고, 그들의 동작을 동기화할 수 있도록 허용하는 기법을 제공한다. 메시지 전달방식은 통신하는 프로세스들이 네트워크에 의해 연결된 다른 컴퓨터들에 존재할 수 있는 분산 환경에서 특히 유용하다. 메시지 전달 시스템은 최소한 두 가지 연산(send와 receive)을 제공한다. 프로세스가 보낸 메시지는 고정 길이일 수도 있고 가변 길이일 수도 있다. 고정 길이 메시지만 보낼 수 있다면, 시스템 수준의 구현은 간단하다. 그렇지만, 이러한 제한은 프로그래밍 작업을 더욱 힘들게 한다. 반면에, 가변 길이 메시지는 보다 복잡한 시스템 수준의 구현을 필요로 하지만, 프로그..

공유 메모리 시스템 (Shared memory system)

공유 메모리 시스템 (Shared memory) 공유 메모리를 사용하는 프로세스 간 통신에서는 통신하는 프로세스들이 공유 메모리 영역을 구축해야 한다. 보통 공유 메모리 영역은 공유 메모리 세그먼트를 생성하는 프로세스의 주소 공간에 위치한다. 이 공유 메모리 세그먼트를 이용하여 통신하고자 하는 다른 프로세스들은 이 세그먼트를 자신의 주소 공간에 추가하여야 한다. 일반적으로 운영체제는 한 프로세스가 다른 프로세스 메모리에 접근하는 것을 금지한다. 따라서, 공유 메모리를 사용하기 위해서는 둘 이상의 프로세스가 이 제약 조건을 제거하는 것에 동의를 해야 한다. 그 후, 프로세스들은 공유 영역에 읽고 씀으로써 정보를 교환할 수 있다. 데이터의 형식과 위치는 통신 프로세스들에 의해 결정되며 이는 운영체제의 소관이..

프로세스간 통신(Interprocess Communication)

프로세스간 통신 (Interprocess Communication) 프로세스 간 통신(Inter-Process Communication, IPC)이란 프로세스 간에 서로 데이터를 주고받는 행위 또는 그에 대한 방법이나 경로를 뜻한다. 특정 프로세스가 다른 프로세스들에게 영향을 주거나 받지 않는다면 독립적인 프로세스라고 말하고, 다른 프로세스들에게 영향을 주거나 받는다면 협력적인 프로세스라고 말한다. 프로세스가 협력할 수 있는 환경을 제공하는 데는 몇 가지 이유가 있다. - 정보 공유 (Information sharing) 여러 사용자가 동일한 정보에 흥미를 가질 수 있으므로, 그러한 정보를 병행적으로 접근할 수 있는 환경을 제공해야 한다. - 모듈성 (Modularity) 시스템 기능을 별도의 프로세스들..

프로세스에 대한 연산 (Operation on Processes)

프로세스에 대한 연산 (Operation on Processes) 대부분의 시스템 내의 프로세스들은 병행 실행될 수 있으며, 반드시 동적으로 생성되고 제거 되어야 한다. 1. 프로세스 생성 (Process Creation) 프로세스는 실행 도중에 프로세스 생성 시스템 호출을 통하여 여러 개의 새로운 프로세스를 생성한다. 생성하는 프로세스를 부모 프로세스 생성되는 프로세스를 자식 프로세스라고 한다. 이 결과, 프로세스 트리를 형성한다. 현대 운영체제들은 프로세스 식별자(pid - process id)를 통해서 프로세스를 구분한다. 이때, 이 식별자는 통상적으로 정수이다. 일반적으로, 프로세스가 자신의 임무를 달성하기 위해서는 자원(CPU 시간, 메모리, 파일, 입출력장치)이 필요하다. 프로세스가 서브프로세..

프로세스 스케줄링 (Process Scheduling)

프로세스 스케줄링 (Process Scheduling) 다중 프로그래밍의 목적은 CPU 이용을 최대화하기 위하여 항상 하나의 프로세스라도 실행되도록 하는데 있다. 시분할의 목적은 각 프로그램이 실행되는 동안 사용자가 상호작용할 수 있도록 프로세스들 사이에서 CPU를 빈번하게 교체하는 것이다. 이 목적을 달성하기 위해 프로세스 스케줄러는 CPU에서 실행 가능한 여러 프로세스들 중에서 하나의 프로세스를 선택한다. 단일처리기 시스템에서는 실행 중인 프로세스가 한 개 이상 있을 수 없다. 만일 프로세스들이 여러 개가 있다면, 나머지 프로세스들은 CPU가 자유로워져 다시 스케줄링이 이루어질 때까지 기다려야 한다. 1. 스케줄링 큐 (Scheduling Queue) 프로세스가 시스템에 들어오면, 이들은 작업 큐에 ..

프로세스

프로세스 1. 프로세스란? 간단히 말해서 프로세스란 실행 중인 프로그램을 말한다. 프로세스는 현대의 시분할 시스템에서 작업의 단위이다. 프로세스는 일반적으로 함수의 매개변수, 복귀 주소와 로컬 변수와 같은 임시적인 자료를 가지는 프로세스 스택과 전역 변수들을 수록하는 데이터 섹션을 포함한다. 또한 프로세스는 프로세스 실행 중에 동적으로 할당되는 메모리인 힙을 포함한다. 2. 프로세스 상태 (Process State) 프로세스는 실행되면서 그 상태가 변한다. 프로세스 상태의 일부분은 프로세스의 현재 활동에 따라 결정된다. 각 프로세스는 다음 상태들 중 하나의 상태로 존재하게 된다: 1) new : 프로세스 생성 중2) running : 명령어들을 실행 중3) waiting : 프로세스가 어떤 사건(I/O ..

세그멘테이션 (Segmentation)

세그멘테이션 (Segmentation) 페이징 기법은 페이지라는 단위로 메모리를 일정한 간격으로 자르는 방식으로 메모리를 관리한다. 하지만 프로세스를 물리적인 단위인 페이지 말고 논리적 내용 단위인 세그먼트로 자를 수 있는 세그먼테이션 방법이 있다. 예를 들면 우리가 돼지를 잡아서 보관을 한다고 생각해보자. 페이징의 방법을 사용하면 돼지를 모두 같은 단위로 잘라서 보관을 하는 것이다. 반면에 세그먼테이션은 부위별로 다른 크기로 잘라서 보관하는 것이다. (페이징 관련 내용: ) 세그멘테이션은 프로세스를 세그먼트의 집합으로 생각한다. 사실 하나의 프로세스가 동작하려면 기본적으로 "코드, 데이터, 그리고 스택" 이 세 가지의 세그먼트는 항상 가지고 있다. 추가로, 프로그램의 시작점이라고 할 수 있는 main ..

OS/메모리 관리 2018.10.24

페이지 테이블의 구조 (Structure of the Page Table)

페이지 테이블의 구조 (Structure of the Page Table) 1. 계층적 페이징(Hierarchical Paging) 대부분 현대 컴퓨터는 매우 큰 논리 주소 공간(2^32에서 2^64)을 지원한다. 이러한 환경에서는 페이지 테이블 자체가 상당히 커진다. 예를 들어, 32비트 논리 주소 공간을 가진 시스템을 생각해보자. 이 시스템에서 페이지의 크기가 4KB(2^12)라면 페이지 테이블은 약 100만(2^32/2^12)개의 항목으로 구성될 것이다. 각 항목은 다시 4B로 구성되기 때문에 각 프로세스는 페이지 테이블 하나만을 저장하기 위하여 4MB의 물리 주소 공간이 필요할 것이다. 이 경우, 모든 페이지 테이블을 주 메모리에서 연속적으로 할당하기를 바라지는 않을 것이다. 한 가지 간단한 해결..

OS/메모리 관리 2018.10.13