전공과목 정리/IT개론

[IT개론🗃️] 운영체제

최연재 2022. 6. 21. 04:59

내용출처 : 소프트웨어 세상을 여는 컴퓨터과학

 

1. 운영체제의 개요

1) 운영체제의개요

(1) 운영체제의 개념

- 컴퓨터가 동작하도록 해주는 프로그램 (제어 프로그램/control program)

- 하드웨어의 각 장치(자원, resource)를 관리 (자원 관리자/resource manager)

- 사용자와 컴퓨터를 연결해주는 프로그래

-사용자가 컴퓨터를 편리하게 사용할 수 있도록 환경 제공

- 커널(kernel) : 컴퓨터가 켜져 있는 동안에 항상 실행 중인 프로그램

 

(2) 운영체제의 종류

마이크로소프트 윈도우, 애플 맥 OS, 오픈 소스 리눅스

 

2) 운영체제의 기능

- 사용자 인터페이스 제공

- 컴퓨터 시스템 자원 관리

 


2. 프로세스관리

1) 프로세스의 개념

(1) 프로세스

- 실행되기 위해 주기억장치로 올라간 프로그램

- 실행 중인 프로그램

- 프로그램 코드뿐만 아니라 실행에 필요한 다양한 정보가 ㅍ포함됨

 

2) 프로세스 제어 블록

(1) 프로세스 제어 블록(PCB ; Process Control Block)

프로세스에 대한 정보를 저장하는 장소

 

(2) 프로세스 제어 블록의 구성

- 프로세스 상태 :  프로세스의 현재 상태 저장

- 주소 레지스터 PC 값 : 다음에 실행될 명령어의 주기억장치 주소 저장

- 스케줄링 정보 : 다음에 실행될 프로세스를 결정하는 데 필요한 정보 저장

(우선순위, 최근 사용 시간, 최근 사용 횟수, 종류)

- 주기억장치 정보 :  해당 프로세스가 주기억장치의 어느 영역에 위치해 있는지 저장

 

3) 프로세스 상태

- 프로세스가 생성되어 종료될 때까지 거치는 상태

- 운영체제 모드와 사용자 모드를 끊임없이 반복

4) 프로세스 스케줄링

(1) 프로세스 스케줄링

- 다음에 어떤 프로세스를 실행할지 결정하는 것

- 다중 프로그래밍(multiprogramming) : 동시에 여러 프로세스를 실행, CPU 이용률 극대화

- 한 프로세스가 종료되거나 입출력을 실행한 경우에만 프로세스를 교체

 

(2) FCFS(First-Come Frist-Served) 스케줄링

: 먼저 도착한 프로세스를 먼저 실행

 

(3) 라운드 로빈(Round Robin) 스케줄링

- 여러 프로세스들이 중앙처리장치를 조금씩 돌아가며 차지하는 방식 :  시분할(time sharing) 방식

- 시간 할당량(time quantum) (time slice) 동안 중앙처리장치를 할당받아 실행되다 시간 할당량 내에 실행을 종료하지 못하면준비 상태가 되고, 준비 큐의 다음 프로세스가 중앙처리장치를 할당받아 실행을 한다. 

- 잦은 교환은 CPU 이용률을 저하시킬 수 있음

 

- 시간 할당량이 매우 크면 FCFS 스케줄링과 유사해져, 평균 대기 시간이 길어진다. 

- 시간 할당량이 매우 적으면 실행보다 전환에서 많은 시간을 소모한다. 

- 적절한 시간 할당량 : 10~100ms

 

(4) 우선순위 스케줄링

- 가장 높은 우선순위의 프로세스에 먼저 중앙처리장치를 할당한다.(우선순위가 동일할 경우, FCFS 적용)

- 우선순위는 프로세스의 중요성, 멀티미디어 여부 등에 의해 결정된다. 

 

- 에이징(aging) : 우선순위가 낮은 프로세스가 오랜 시간 실행되지 않는 기아(starvation) 현상을 막기 위해 일정 시간동안 실행되지 않으면 우선순위를 한 단계 높인다. 

 


3. 주기억장치 관리

- OS는 현재 사용 중인 주기억장치 영역과 사용되지 않고 있는 영역에 대한 정보를 유지한다. 

- 주기억장치가 필요한 프로세스에 주기억장치를 할당하고, 프로세스가 종료되면 사용했던 주기억장치 영역을 회수한다. 

 

1) 단순한 구조의 주기억장치

(1) 단일 연속 주기억장치

- 주기억장치에 운영체제 외에 하나의 사용자 프로그램만 저장한다.

- 한 순간에 오직 하나의 프로그램만 주기억장치에 저장하여 실행

 

(2) 분할 주기억장치

- 주기억장치를 n개의 영역(각 영역의 크기는 다를 수 있다.)으로 분할하여 각 영역에 서로 다른 프로세스를 동시에 저장

- 다중프로그래밍 방식

- 분할 주기억장치에서의 프로세스 할당 방식

  • 최초 적합 : 프로세스의 크기보다 큰 최초의 영역에 할당
  • 최적 적합 :  프로세스의 크기보다 큰 영역 중 가장 작은 영역에 할당
  • 최악 적합 :  프로세스의 크기보다 큰 영역 중 가장 큰 영역에 할당

2) 가상 메모리

(1) 가상 메모리(virtual memory)

- 여러 프로그램이 실행되고 있더라도 특정한 순간에 실행되는 프로그램은 하나이다. 

- 한 순간에 CPU에 의해 실행되는 부분은 전체 프로그램의 일부이다. 

- 당장 실행에 필요한 부분만 주기억장치에 저장하고, 나머지는 보조기억장치에 두고 동작

 

(2) 가상 메모리의 필요성

- 프로그램의 크기가 주기억장치보다 큰 경우, 실행이 불가능하다.

- 동시에 실행하려는 전체 프로그램의 크기가 주기억장치보다 큰 경우, 실행이 불가능하다. 

 

(3) 페이징

- 가상 메모리를 구현하는 방법으로, 가상 메모리 공간을 일정한 크기의 페이지로 나눠 관리한다. 

- 페이지 프레임(page frame) : 실제 주기억장치의 페이지에 해당하는 부분

 

<페이징의 동작>

- 페이지 테이블을 통해 페이지와 페이지 프레임을 매칭한다. 

- 임의의 페이지가 실행에 필요하면 우선 주기억장치에 해당 페이지가 있는지 확인한다. 

- 주기억장치에 해당 페이지가 있을 경우, 사용한다.

- 주기억장치에 해당 페이지가 없을 경우, 보조기억장치로부터 해당 페이지를 주기억장치의 프레임에 저장 후 접근한다. 

 

<페이징 교체(page replacement)>

- 새로운 페이지를 주기억장치에 저장할 때 빈 프레임이 없다면 기존의 페이지를 제거해야 한다.

- 주기억장치에서 제거할 페이지를 결정하는 동작이다. 

- 제거할 페이지가 수정되었을 경우, 보조기억장치에 써야 한다. 

- 제가할 페이지가 수정되지 않았을 경우, 단순히 기억장치에서 제거하면 된다. 

 

<알고리즘>

  • FIFO(First-in First-Out) 알고리즘 : 주기억장치에 가장 먼저 올라온 페이지를 제거한다. 
  • LRU(Least Recently Used) 알고리즘 : 가장 오랫동안 사용되지 않았던 페이지를 제거한다.
  • LFU(Least Frequently Used) 알고리즘 : 사용 빈도가 가장 낮은 페이지를 제거한다.

 


4. 파일 관리

1)  파일 시스템의 이해

(1) 파일

: 보조기억장치에 저장된 연관성 있는 정보의 집합

 

(2) 파일 시스템

- 운영체제가 파일 관리를 담당한다. 

- 파일 시스템 :  파일을 관리하는 운영체제의 일부분

 

2) 윈도우의 파일 시스템

(1) FAT(File Allocation Table)

: 윈도우의 파일 시스템으로, 트랙과 섹터로 이루어져 있다.

 

(2) FAT의 논리적 구조

- 시스템 영역 : 디스크와 데이터 영역에 대한 중요한 정보를 저장한다. 

  • 부트 레코드 : 컴퓨터를 처음 켰을 때 동작하는 프로그램을 저장한다 ; 운영체제를 주기억장치로 옮긴다. 
  • 파일 할당 테이블 : 데이터 영역의 어느 부분이 사용되고 있는지 나타낸다. 
  • 루트 디렉토리 : 디스크에 저장된 *파일에 대한 정보를 보관한다. 

* 파일에 대한 정보

: 파일 이름과 확장자, 파일 크기, 기록 날짜 및 시간, 시작 클러스터 번호, 파일의 속성(읽기/쓰기)

 

- 데이터 영역 : 일반적인 파일과 서브 디렉토리를 저장하는 영역으로, 클러스터 단위로 나눠 관리한다.

 

3) 유닉스(리눅스)의 파일 시스템

(1) 유닉스 시스템 디스크의 논리적 구조

- 부트 블록 :  운영체제를 주기억장치에 올리는 역할을 하는 프로그램을 저장한다. 

- 수퍼 블록 :  *디스크에 대한 정보를 저장한다. 

↔ 윈도우에서는 여러 클러스터에 나눠 저장한다.

* 디스크에 대한 정보

: 전체 블록의 수, 블록의 크기, 사용 중인 블록의 개수, 가용 블록의 번호, inode 리스트의 크기, 가용 inode의 번호

- inode 리스트 : inode(index node ; 파일에 대한 다양한 정보를 저장)를 저장한다. 

↔ 윈도우에서와 달리 파일에 대한 정보를 모두 모아서 이 곳에 저장한다. 

* 루트 디렉토리도 일반 디렉토리 중 하나로 간주한다. 

- 데이터 블록 : 일반적인 파일, 디렉토리, 간접 블록을 저장한다.