운영체제의 개념
1. 운영체제(OS; Operation System)의 정의
- 운영체제는 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임이다.
- 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로, 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공해준다.

운영체제의 자원
시스템에서 사용할 수 있는 CPU, 주기억장치, 보조기억장치, 프린터, 파일 및 정보등을 의미한다.
2. 운영체제의 목적
- 처리 능력 향상, 사용 가능도 향상, 반환 시간 단축등을 목적으로 한다.
- 처리 능력, 반환 시간, 사용 가능도, 신뢰도는 OS의 성능을 평가하는 기준이 된다.
- 처리 능력(Throughtput): 일정 시간 내에 시스템이 처리하는 일의 양
- 반환 시간(Time Around Time): 시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간.
- 사용 가능도(Availability): 시스템을 사용할 필요가 있을때 즉시 사용 가능한 정도
- 신뢰도(Reliabililty): 시스템이 주어진 문제를 정확하게 해결하는 정도.
3. 운영체제의 기능
- 프로세서(처리기, Processor), 기억장치(주기억장치, 보조기억장치), 입출력 장치, 파일 및 정보등의 자원을 관리한다.
- 자원을 효율적으로 관리하기 위해 자원의 스케쥴링 기능을 제공한다.
- 스케쥴링(Scheduling): 어떤 자원을 누가 언제, 어떤 방식으로 사용할지 정해주는 것.
- 사용자와 시스템 간의 편리한 인터페이스를 제공한다.
- 시스템의 각종 하드웨어와 네트워크를 관리, 제어한다.
- 데이터를 관리하고, 데이터 및 자원의 공유 기능을 제공한다.
- 시스템의 오류를 검사하고 복구한다.
- 자원 보호 기능을 제공한다.
- 입, 출력에 대한 보조 기능을 제공한다.
- 가상 계산기 기능을 제공한다.
- 가상 계산기(Virtual Computer): 가상 계산기는 한대의 컴퓨터를 여러 대의 컴퓨터처럼 보이게 하는 가상의 컴퓨터 운영체제에 의해 만들어지며, 사용자의 관점에서는 가상 컴퓨터가 실제 컴퓨터처럼 보일 수도 있고 아주 다르게 보일 수도 있다.
4. 운영체제의 주요 자원 관리
- 프로세스(process): 일반적으로 실행중인 프로그램을 의미.
- 프로세스 스케쥴링 및 동기화 관리 담당
- 프로세스 생성과 제거, 시작과 정지, 메시지 전달 등의 기능 담당
- 기억장치
- 주변장치
- 입, 출력장치 스케쥴링 및 전반적인 관리 담당
- 파일
- 팡리의 생성과 삭제, 변경, 유지 등의 관리 담당
프로세스
1. 프로세스(Process)의 정의
- 프로세스는 일반적으로 프로세서(처리기, CPU)에 의해 처리되는 사용자 프로그램, 시스템 프로그램, 즉 실행중인 프로그램을 의미하며, 작업(Job), 테스크(Task)라고도 한다.
- 프로세스는 다음과 같이 여러 형태로 정의할 수 있다.
- PCB를 가진 프로그램
- 실기억장치에 저장된 프로그램
- 프로세서가 할당되는 실체로서, 디스패치가 가능한 단위
- 비동기적 행위를 일으키는 주체
- 지정된 결과를 얻기 위한 일련의 계통적 동작
- 목적 또는 결과에 따라 발생되는 사건들의 과정
- 운영체제가 관리하는 실행 단위
2. PCB(Process Conotrol Block, 프로세스 제어 블록)
- PCB: 운영체제가 프로세스에 대한 주용한 정보를 저장해 두는 곳. Task Control Block 또는 Job Control Block 이라고도 한다.
- 각 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB는 제거된다.
- PCB에 저장되어 있는 정보는 다음과 같다.
- 프로세스의 현재 상태
- 포인터
- 부모 프로세스에 대한 포인터: 부모 프로세스의 주소 기억
- 자식 프로세스에 대한 포인터: 자식 프로세스의 주소 기억
- 프로세스가 위치한 메모리에 대한 포인터: 션재 프로세스가 위치한 주소 기억
- 할당된 자원에 대한 포인터: 프로세스에 할당된 각 자원에 대한 주소 기억
- 프로세스 고유 식별자
- 스케줄링 및 프로세스의 우선순위
- 스케줄링 정보 및 프로세스가 실행될 우선 순위
- CPU 레지스터 정보
- Accumulator(누산기), 인덱스 레지스터, 범용 레지스터, 프로그램 카운터(pc)등에 대한 정보
- 주 기억장치 관리 정보
- 기준 레지스터(Base Register), 페이지 테이블링(Page Table)에 대한 정보
- 입출력 상태 정보
- 계정 정보
- CPU 사용 시간, 실제 사용시간, 한정된 시간
3. 프로세스 상태 전이
프로세스 상태 전이란 프로세스가 시스템 내애 존재하는 동안 프로세스의 상태가 변하는 것을 의미하며, 프로세스의 상태를 다음과 같이 상태 전이도로 표시할 수 있다. 프로세스의 상태는 제출, 접수, 준비, 실행, 대기 상태로 나눌 수 있으며, 이 중 주요 세 가지 상태는 준비, 실행, 대기 상태이다.

- 제출(submit)
- 작업을 처리하기 위해 사용자가 작업을 시스템에 제출한 상태이다.
- 접수(Hold)
- 제출된 작업이 스풀 공간인 디스크의 할당 위치에 저장된 상태이다.
- 준비(Ready)
- 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태이다.
- 프로세스는 준비상태 큐에서 실행을 준비하고 있다.
- 접수상태에서 준비 상태로의 전이는 Job 스케줄러에 의해 수행된다.
- 실행(Run)
- 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태이다.
- 프로세스 수행이 완료되기 전에 프로세스에게 주어진 프로세서 할당 시간이 종료(Timer Run Out)되면 프로세스는 준비상태로 전이된다.
- 실행중인 프로세스에 입출력(I/O) 처리가 필요하면 실행중인 프로세스는 대기 상태로 전이된다.
- 준비 상태에서 실행 상태로의 전이는 CPU(프로세서) 스케줄러에 의해 수행된다.
- 대기(Wait), 보류, 블록(Block)
- 프로세스에 입출력 처리가 필요하면 현재 실행중인 프로세스가 중단되고, 입출력 처리가 완료될 때까지 대기하고 있는 상태이다.
- 종료(Terminated, Exit)
- 프로세스의 실행이 끝나고 프로세스 할당이 해지된 상태이다.
준비상태 큐
준비상태 큐는 여러 프로세스가 프로세서를 할당받기 위해 기다리는 장소
4. 프로세스 상태 전이 관련 용어
- Dispatch
- 준비상태에서 대기하고 있는 프로세스 중 하나가 프로세스를 할당받아 실행 상태로 전이되는 과정이다.
- Wake Up
- 입출력 작업이 완료되어 프로세스가 대기 상태에서 준비상태로 전이되는 과정이다.
- Spoong
- 입출력 장치의 공유 및 상대적으로 입출력장치의 처리 속도를 보완하고 다중 프로그래밍 시스템의 성능을 향상시키기 위해 입출력할 데이터를 직접 입출력장치에 보내지 않고 나중에 한꺼번에 입출력하기 위해 디스크에 저장하는 과정이다.
- 교통량 제어기(Traffic Controller)
- 프로세스의 상태에 대한 조사와 통보를 담당한다.
5. 스레드(Thread)
- 스레드란 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위이다.
- 하나의 프로세스에 하나의 스레드가 존재하는 경우에는 단일 스레드, 하나 이상의 스레드가 존재하는 경우에는 다중 스레드라고 한다.
- 프로세스의 일부 특성을 갖고 있기 때문에 경량(Light Weight) 프로세스라고도 한다.
- 스레드 기반 시스템에서 스레드는 독립적인 스케줄링의 최소 단위로서 프로세스의 역할을 담당한다.
- 동일 프로세스 환경에서 서로 독립적인 다중 수행이 가능하다.
스레드의 분류
- 사용자 수준의 스레드
- 사용자가 만든 라이브러리를 사용하여 스레드를 운용한다.
- 속도는 빠르지만 구현이 어렵다.
- 커널 수준의 스레드
- 운영체제의 커널에 의해 스레드를 운용한다.
- 구현이 쉽지만 속도가 느리다.
스레드 사용의 장점
- 하나의 프로세스를 여러 개의 스레드로 생성하여 병행성을 증진시킬 수 없다.
- 하드웨어, 운영체제의 성능과 응용 프로그램의 처리율을 향상시킬 수 없다.
- 응용 프로그램의 응답 기간(Response Time)을 단축시킬 수 있다.
- 실행 환경을 공유시켜 기억장소의 낭비가 줄어든다.
- 프로세슫르 간의 통신이 향상된다.
- 스레드는 공통적으로 접근 가능한 기억장치를 통해 효율적으로 통신한다.
스케줄링(Scheduling)
스케줄링은 프로세스가 생성되어 실행될 때에 필요한 시스템의 여러 자원을 프로세스에게 할당하는 작업을 의미한다. 프로세스가 생성되어 완료될 때까지 프로세스는 여러 종류의 스케줄링 과정을 거치게 된다. 스케줄링의 종류에는 장기, 중기, 단기 스케줄링이 있다.
스케줄링의 종류
- 장기 스케줄링
- 어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정하여 준비상태 큐로 보내는 작업을 의미한다.
- 작업 스케줄링(Job Scheduling), 상위 스케줄링이라고도 하며, 작업 스케줄러에 의해 수행된다.
- 중기 스케줄링
- 어떤 프로세스들이 CPU를 할당받을 것인지 결정하는 작업을 의미한다.
- CPU를 할당받으려는 프로세스가 많을 경우 프로세스를 일시 보류시킨 후 활성화해서 일시적으로 부하를 조절한다.
- 단기 스케줄링
- 프로세스가 실행되기 위해 CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업을 말한다.
- 프로세서 스케줄링(Process Scehduling), 하위 스케줄링이라고도 한다.
- 프로세서 스케줄링 및 문맥 교환은 프로세서 스케줄러에 의해 수행된다.
문맥 교환(Context Switching)
문맥교환은 하나의 프로세스에서 다른 프로세스로 CPU가 할당되는 과정에서 발생하는 것으로 새로운 프로세스에 CPU를 할당하기 위해 현재 CPU가 할당된 프로세스의 상태 정보를 저장하고, 새로운 프로세스의 상태 정보를 설정한 후 CPU를 할당하여 실행되도록 하는 작업을 의미한다.
2. 목적
스케줄링은 cpu나 자원을 효율적으로 사용하기 위한 정책이며, 다음과 같은 목적들을 가지고 있다.
- 공정성
- 처리율(량) 증가
- 단위 시간당 프로세스를 처리하는 비율(양)을 증가시킨다.
- CPU 이용률 증가
- 프로세스 실행 과정에서 주 기억장치를 엑세스 한다든지, 입출력 명령 실행 등의 원인에 의해 발생할 수 있는 CPU의 낭비시간을 줄이고, CPU가 순수하게 프로세스를 실행하는데 사용되는 시간 비율을 증가시킨다.
- 우선순위 제도
- 오버헤드 최소화
- 응답 시간(Response Time, 반응 시간) 최소화
- 작업을 지시하고, 반응하기 시작하는 시간을 최소화한다.
- 반환 시간(Turn Around Time) 최소화
- 프로세스를 제출한 시간부터 실행이 완료될때까지 걸리는 시간을 최소화한다.
- 대기 시간 최소화
- 프로세스가 준비상태 큐에서 대기하는 시간을 최소화한다.
- 균형 있는 자원의 사용
- 메모리, 입출력장치 등의 자원을 균형 있게 사용한다.
- 무한 연기 회피
- 자원을 사용하기 위해 무한정 연기되는 상태를 회피한다.
스케줄링의 성능 평가 기준
스케줄링의 목적 중 CPU 이용률, 처리율, 반환 시간, 대기 시간, 응답 시간은 여러 종류의 스케줄링 성능을 비교하는 기준이 된다.
우선순위
우선순위는 시스템에 의해 자동으로 또는 외부 사항에 의해 결정되기도 한다. 시간 제한, 기억장치 요구, 개방된 파일 수, 평균 입출력 실행 시간 등을 이용한 내부적 우선순위와 작업을 지원하는 정책, 부서 등의 외부적 우선순위가 있다.
오버헤드(overhead)
어떤 작업을 수행하기 위해 필요한 추가적인 비용이나 부담. 스케줄링에서의 오버헤드는 스케줄링 알고리즘이나 정책을 실행하기 위해 필요한 추가적인 작업이나 리소스 사용을 의미한다.
3. 프로세스 스케줄링의 기법
비선점(Non-Preemeptive) 스케줄링
- 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법이다.
- 프로세스가 CPU를 할당받으면 해당 프로세스가 완료될 때까지 CPU를 사용한다.
- 모든 프로세스에 대한 요구를 공정하게 처리할 수 있다.
- 프로세스 응답 시간의 예측이 용이하며, 일괄 처리 방식에 적합하다.
- 중요한 작업(짧은 작업)이 중요하지 않은 작업(긴 작업)을 기다리는 경우가 발생할 수 있다.
- 비선점 스케줄링의 종류에는 FCFS, SJF, 우선순위, HRN, 기한부 등의 알고리즘이 있다.
선점(Preemptive) 스케줄링
- 하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법이다.
- 우선순위가 높은 프로세스를 빠르게 처리할 수 있다.
- 주로 빠른 응답시간을 요구하는 대화식 시분할 시스템에 사용된다.
- 많은 오버헤드(overhead)를 초래한다.
- 선점이 가능하도록 일정 시간 배당에 대한 인터럽트용 타이머 클록(Clcok)이 필요하다.
- 선점 스케줄링의 종류에는 Round Robin, SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐 등의 알고리즘이 있다.
프로토콜(protocol)
프로토콜은 서로 다른 기기들 간의 데이터 교환을 원활하게 수행할 수 있도록 표준화시켜 놓은 통신규약이다. 통신을 제어하기 위한 표준 규칙과 절차의 집합으로 하드웨어와 소프트웨어, 문서를 모두 규정한다.
프로토콜(protocol)이란 두 개체 간의 합의된 약속이란 의미를 가지고 있다.
1. 기본요소
- 구문(Syntax)
- 전송하고자 하는 데이터의 형식, 부호화, 신호 레벨등을 규정
- 의미(Semantics)
- 두 기기간의 효율적이고 정확한 정보 전송을 위한 협조 사항과 오류 관리를 위한 제어 정보를 규정
- 시간(Timing)
- 두 기기 간의 통신 속도, 메시지의 순서 제어 등을 규정
2. 기능
- 단편화와 재결합
- 송신 측에서 전송할 데이터를 전송에 알맞은 일정 크기의 작은 블록으로 자르는 작업을 단편화(Fragmentation)라 하고, 수신 측에서 단편화된 블록을 원래의 데이터로 모으는 것을 재결합(Reassembly)이라 한다.
- 단편화를 통해 세분화된 데이터 블록을 프로토콜 데이터 단위(PDU; Protocl Data Unit)라고 한다.
- 데이터를 단편화하여 전송하면 전송 시간이 빠르고, 통신중의 오류를 효과적으로 제어할 수 있다.
- 너무 작은 블록으로 단편화할 경우 재결합 시 처리 시간이 길어지고, 실제 데이터 외에 부수적인 데이터가 많아지므로 비효율적이다.
프로토콜 데이터 단위(PDU)
- 전송 데이터에 송수신 측 주소, 오류 검출 코드, 제어 정보가 포함된 것으로 송수신 두 기기 사이에 교환되는 데이터의 단위이다.
- 계층화된 프로토콜에서는 PDU를 각 계층마다 다르게 부르는데 일반적으로 2계층에서는 프레임(Frame), 3계층에서는 패킷(Packet), 4계층에서는 세그먼트(Segment)라고 부른다.
- 캡슐화
- 캡슐화(Encapsulation)는 단편화된 데이터에 송수신지 주소, 오류 검출 코드, 프로토콜 기능을 구현하기 위한 프로토콜 정보 등의 정보를 부가하는 것으로, 요약화라고도 한다.
- 대표적인 예가 데이터 리읔 제어 프로토콜의 HDLC 프레임이다.
- 정보 데이터를 오류 없이 정확하게 전송하기 위해 캡슐화를 수행한다.
- 흐름 제어
- 흐름제어(Flow Control)는 수신 측의 처리 능력에 따라 송신 측에서 송신하는 데이터의 전송량이나 전송 속도를 조절하는 기능이다.
- 정지-대기(Stop-and-Wait), 슬라이딩 윈도우(Sliding Window) 방식을 이용한다.
- 오류 제어
- 오류제어(Error Control)는 전송중에 발생하는 오류를 검출하고 정정하여 데이터나 제어 정보의 파손에 대비하는 기능이다.
- 동기화
- 동기화(Synchronization)는 송수신 측이 같은 상태를 유지하도록 타이밍(Timing)을 맞추는 기능이다.
- 순서 제어
- 순서제어(Sequencing)는 전송되는 데이터 블록(PDU)에 전송 순서를 부여하는 기능으로, 연결 위주의 데이터 전송 방식에만 사용된다.
- 송신 데이터들이 순서적으로 저송되도록 함으로써 흐름 제어 및 오류 제어를 용이하게 하는 기능을 한다.
- 주소 지정
- 주소 지정(Addressing)은 데이터가 목적지까지 정확하게 전송될 수 있도록 목적지의 이름, 주소, 경로를 부여하는 기능이다.
- 목적지 이름은 전송할 데이터가 가리키는 곳, 주소는 목적지의 위치, 경로는 목적지에 도착할 수 있는 방법을 의미한다.
- 다중화
- 다중화(Multiplexing)는 한개의 통신 회선을 여러 가입자들이 동시에 사용하도록 하는 기능이다.
- 경로 제어
- 경로 제어(Routing)는 송수신 측 간의 송신 경로 중에서 최적의 패킷 교환 경로를 설정하는 기능이다.
- 전송 서비스
- 전송하려는 데이터가 사용하도록 하는 별도의 부가 서비스이다.
- 우선순위: 특정 메시지를 최대한 빠른 시간 안에 목적지로 전송하기 위하여 메시지 단위에 우선순위를 부가하여 우선순위가 높은 메시작 먼저 도착하도록 한다.
- 서비스 등급: 데이터의 요구에 따라 서비스 등급을 부여하여 서비스한다.
- 보안성: 엑세스 제한과 같은 보안 체제를 구현한다.
TCP/IP
Transmission Control Protocol/ Internet Protocol
인터넷에 연결된 서로 다른 기종의 컴퓨터들이 데이터를 주고받을 수 있도록 하는 표준 프로토콜이다. 1960년대 말 ARPA에서 개발하여 ARPANET(1972)에서 사용하기 시작했다. UIX의 기본 프로토콜로 사용되었고, 현재 인터넷 범용 프로토콜로 사용된다. TCP/IP 프로토콜은 TCP 프로토콜과 IP 프로토콜이 결합된것을 의미한다.
- TCP (Transmission Control Protocol)
- OSI 7계층의 전송 계층에 해당
- 신뢰성 있는 연결형 서비스를 제공
- 패킷의 다중화, 순서 제어, 오류 제어, 흐름 제어 기능을 제공
- 스트림(Stream) 전송 기능 제공
- TCP 헤더에는 Source/Destination Port Number, Sequence Number, Acknowledgement Number, Checksum 등이 포함된다.
- IP (Internet Protocol)
- OSI 7계층의 네트워크 계층에 해당
- 데이터그램을 기반으로 하는 비연결형 서비스를 제공
- 패킷의 분해/조립, 주소 지정, 경로 선택 기능을 제공
- 헤더의 길이는 최소 20Byte에서 최대60Byte이다.
- IP 헤더에는 Version, Headr Length, Total Packet Length, Header Checksum, Source IP Address, Destination IP Address 등이 포함된다.
Reference