내용출처 : 소프트웨어 세상을 여는 컴퓨터과학
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 ; 파일에 대한 다양한 정보를 저장)를 저장한다.
↔ 윈도우에서와 달리 파일에 대한 정보를 모두 모아서 이 곳에 저장한다.
* 루트 디렉토리도 일반 디렉토리 중 하나로 간주한다.
- 데이터 블록 : 일반적인 파일, 디렉토리, 간접 블록을 저장한다.
'전공과목 정리 > IT개론' 카테고리의 다른 글
[IT개론🗃️] 자료구조 (2) | 2022.06.21 |
---|---|
[IT개론🗃️] 프로그래밍 언어 (0) | 2022.06.21 |
[IT개론🗃️] 컴퓨터구조 (0) | 2022.02.14 |
[IT개론🗃️] 데이터 표현과 디지털 논리 (0) | 2022.02.02 |
[IT개론🗃️] 컴퓨터과학 도입부 (0) | 2022.01.28 |