운영체제의 개요
1. 운영체제 구조와 기능
운영체제란
컴퓨터의 효율적인 운영을 담당하는 시스템 소프트웨어
- 시스템의 자원인 CPU, RAM, HDD, I/O장치, 네트워크 등을 효율적으로 관리하고 운영
- 사용자와 컴퓨터 하드웨어 간의 인터페이스 역할을 함
운영체제의 목표
- 컴퓨터 내의 하드웨어/소프트웨어 자원을 관리함
- 컴퓨터에 사용자가 쉽게 접근할 수 있는 인터페이스를 제공함
- 수행 중인 프로그램들의 효율적인 운영을 도움
- 작업 처리 과정 중의 데이터를 공유함
- 입출력에 보조적인 기능을 수행함
- 오류가 발행하면 오류를 처리함
운영체제의 기능
- 프로세스 관리 : 프로세스의 생성, 삭제, 동기화 등에 관여
- 작업 관리 : 프로세스가 수행하는 작업에 대한 관리
- 주기억 장치 관리 : 주기억 장치의 할당과 회수를 관리
- 보조기억 장치 관리 : 보조기억 장치의 사용을 관리
- 입출력 장치 관리 : 입출력 장치를 관리함
- 파일 관리 : 파일 생성·빈 공간 관리·디스크 스케줄링 등을 담당
- 보안 관리사용자 계정 관리 및 불법 침입 등 보안 관련 사항 관리
2. 운영체제 처리유형
일괄처리(Batch Processing)
- 여러 사용자들의 작업들을 모아서 일괄적으로 순서대로 처리하는 방식
- 실행 요청 순서에 따라 순차적으로 프로그램을 실행
다중프로그래밍(Multi-programming)
- 한 프로그램이 입출력 등의 작업을 할 때 다른 프로그램을 수행
- 중앙처리장치를 쉬게 하지 않고 처리하게 하여 전체적인 처리 속도를 향상시키는 방식
시분할 시스템(Time-sharing System)
- CPU 운영 시간을 잘게 쪼개어 여러 사용자에게 골고루 처리 시간을 제공
- 특정 사용자가 오래 기다리는 것을 방지
다중처리(Multi-Processing)
- 두 개 이상의 프로세서로 구성된 시스템의 운영체제로서, 단일 처리 시스템보다 많은 양의 작업을 동시에 처리할 수 있는 방식
3. 운영체제 발전 과정
유닉스(Unix)
- 고가의 컴퓨터를 여러 사람이 이용할 수 있는 운영체제 개발을 시도
- 1960년대 초 : MIT, Bell Lab, GE 등이 공동으로 MULTICS 개발 시작
- 1969년 AT&T 연구원 Ken Tompson과 Dennis Ritchie가 UNICS 개발
- 1973년 Dennis Ritchie가 C언어로 다시 개발 -> 고급 언어로 작성된 최초의 운영체제
- 1976년 미국의 대학과 기업에 확산
- 1978년 버클리 대학의 Bill Joy와 Chuck Haley가 BSD* UNIX 발표
- 1983년 AT&T가 System V 발표
- 특징
- 전문 프로그래머용으로 개발 다양한 프로그램 제작
- 고급 언어로 작성되어 다양한 하드웨어에 설치 가능
- 연구용으로 소스 공개 대학이나 연구소에서 많이 사용
- 다중 사용자 시스템
- 강력한 네트워크 기능 지원
- X Windows 도구로 GUI 환경 제공
리눅스(Linux)
- 1991년 핀란드의 헬싱키 대학생이던 Linus Torvalds가 개발
- GNU 프로젝트에 참여하면서 급속하게 성장
- 무료이며 소스 코드가 완전히 공개된 운영체제
- 누구나 다운받아 설치할 수 있으며, 다수의 배포판이 존재
Mac OS
- 애플에서 개발한 GUI 기반의 운영체제
- FreeBSD를 변형하여 매킨토시 컴퓨터에서 동작
- 1984년~2001년 : 클래식 Mac OS (버전 1 ~ 9)
- 2001년~2015년 : Mac OS X
- 2016년 ~ 현재 : macOS
- 아이맥, 맥북프로 출시 (인텔기만 매킨토시)
- iOS, watchOS, tvOS 와 통일된 명칭 사용
Window OS
- 마이크로소프트사에서 만든 그래픽 사용자 인터페이스(GUI)기반 운영체제
- 1985년 Windows 1.0
- 1992년 Windows 3.1 : MS-DOS에 GUI를 추가한 구조
- 1995년 Windows 95 : 자체적 GUI 환경의 OS
- 2001년 Windows XP : 윈도우 NT 기반으로 전면 개선
- 2009년 Windows 7
- 2012년 Windows 8
- 2015년 Windows 10
- 2021년 Windows 11
프로세스 관리와 스케줄링
1. 프로세스 관리
프로세스(Process)

실행을 위해서 주기억장치에 올려진 프로그램 (운영체제 관리)
프로그램 코드 뿐만 아니라 실행에 필요한 다양한 정보도 포함
운영체제에서 실행되는 시스템 작업의 기본 단위
프로세스 생명 주기

준비 : 프로세스 실행 기다림
실행 : CPU에서 프로세스 실행, CPU는 한순간에 하나의 프로세스만 실행
대기 : 어떤 사건이 일어나기를 기다림
프로세스 제어 블록(Process Control Block)
- 운영체제는 프로세스 각각에 대한 정보 관리를 통해 프로세스를 제어함
- 프로세스에 대한 정보는 PCB(Process Control Block)에 저장됨
- 임의의 프로세스가 생성되면 PCB가 생성되며 프로세스 종료 시 없어짐
- PCB 정보
- 프로세스의 상태 : 실행 상태인지 또는 실행을 위해 준비상태인지 등의 정보
- PC 값 : 다음에 실행될 명령어의 주기억장치 주소를 의미, PC 레지스터에 저장
- 스케줄링 정보 : 다음에 실행될 프로세스를 결정하는 데 필요한 정보로, 프로세스 스케줄링 정책, 우선순위등을 의미
- 주기억장치 정보 : 해당 프로세스가 주기억장치 어느 영역에 위치해있는지를 저장
프로세스 생성

- 생성된 프로세스 A의 프로세스 제어 블록이 준비 큐에 연결 - 준비 상태
- 중앙처리장치가 프로세스 A를 실행 - 실행 상태
프로세스 상태 - 준비, 실행

- 프로세스 B와 C가 생성, 준비 상태
- 중앙처리장치가 프로세스 A를 실행 – 실행 상태
프로세스 상태 - 대기

- 프로세스 A에 디스크 입출력 명령이나 sleep 명령이 발생할 경우 : 대기 상태
- 기다리던 이벤트가 종료되면 준비 큐로 이동해서 준비 상태가 됨
프로세스 종료

- 프로세스 A의 실행이 종료된 경우 : PCB와 프로세스가 메모리에서 삭제됨
2. 프로세스 스케줄링
다중 프로그래밍(Multi-programming)
- 여러 개의 프로세스를 주기억장치에 적재
- 실행 중인 프로세스가 대기하는 경우 다른 프로세스가 CPU에서 실행
- CPU 이용률을 최대화하는 개념
프로세스 스케줄링(Process Scheduling)
운영체제가 어떤 프로세스를 실행할 지를 결정하는 것
- FCFS(First-Come First-Served) 스케줄링 : 먼저 도착한 프로세스를 먼저 서비스(실행)하는 방법
- 라운드 로빈(Round Robin) 스케줄링
- Shortest-Job-First(SJF)
라운드 로빈(Round Robin) 스케줄링
- 여러 프로세스들이 CPU를 돌아가며 일정한 시간을 할당받아 실행되는 방식
- 프로세스들은 시간 할당량(time quantum) 동안 CPU를 할당받아 실행
Shortest-Job-First(SJF)
- 각 프로세스는 자신의 수행 시간을 제시
- 수행 시간이 가장 작은 프로세스에 먼저 CPU를 할당
- 작업들의 평균 대기시간이 최소가 됨
- 단점 : 무한봉쇄(Indefinite blocking), 기아상태(Starvation)
우선순위(Priority) 스케줄링
- 가장 높은 우선순위의 프로세스에게 먼저 CPU를 할당
- 우선 순위가 같은 프로세스는 FCFS 방법을 적용
- 단점 : 무한봉쇄(Indefinite blocking), 기아상태(Starvation)
- 에이징(Aging) 기법 : 기다린 시간에 비례하여 우선 순위를 높여줌

스케줄링 평가 기준
- 공정성 (특정 프로세스가 불이익을 당하는가)
- Throughput (단위시간에 끝나는 작업 수)
- Response time
- 요청 목적에 맞는가(급한 작업, 여유 있는 작업)
- 예측 가능성 (요청 시마다 시간 편차가 큰지 여부)
- 오버 헤드 최소화 (스케줄링에 소요되는 시간과 공간)
- 균형적인 자원 이용 (다른 자원의 활용도를 높이는가)
주기억장치와 파일 관리
1. 주기억장치 관리
주기억장치(Main Memory)
- 현재 실행 중인 프로그램과 이 프로그램이 필요로 하는 데이터를 일시적으로 저장하는 장치
- 운영체제는 현재 사용되고 있는 주기억장치 영역과 사용되지 않는 영역에 대한 정보를 유지
- 프로세스에게 메모리를 할당하고, 프로세스가 종료되면 회수
단일 프로그래밍

- 주기억장치에 운영체제 외 한 개의 사용자 프로그램만 저장하는 관리 기법
- 주기억장치를 두 영역으로 나누어 저장
다중 프로그래밍 - 분할 메모리 관리
- 주기억장치(메모리)를 n개의 영역으로 분할하여 서로 다른 프로세스를 동시에 저장
분할 메모리 관리 할당 방식
- 새롭게 생성된 프로세스를 메모리에 할당하는 방식
- 최초 적합 : 프로세스의 크기보다 큰 최초의 영역에 할당
- 최적 적합 : 프로세스의 크기보자 큰 영역 중 가장 작은 영역에 할당
- 최악 적합 : 프로세스의 크기보다 큰 영역 중 가장 큰 영역에 할당
가상 메모리(Virtual Memory)
- 실행될 프로그램이 주기억장치보다 크거나 여러 개인 경우에는 주기억장치의 공간 부족으로 인해 프로그램 실행에 제약이 됨
- 당장 실행에 필요한 부분만 주기억장치에 저장하고, 당장 필요하지 않는 나머지 부분은 보조기억장치에 넣어두고 실행
페이지(Page)
- 프로그램을 일정한 크기로 나눈 단위
- 페이지 단위로 주기억장치에 프로그램이 올라가서 동작
페이징(Paging)
- 가상메모리를 구현하는 한 방법
- 페이지 프레임 : 실제 주기억장치의 페이지가 저장되는 고정된 크기의 블록
페이지 테이블 (Page Table)

- 프로세스마다 각 페이지가 주기억장치의 어느 프레임에 저장되는지를 나타내는 테이블
페이지 교체
새로운 페이지를 주기억장치에 저장할 때 비어있는 프레임이 없으면?
-> 새로운 페이지를 저장하기 위해 주기억장치에서 제거할 페이지를 결정하고 교체함

페이지 교체 알고리즘
- FIFO (First-In First-Out) 알고리즘
- 페이지를 교체해야 할 때 주기억장치에 가장 먼저 올라온 페이지를 선택해서 제거하는 기법
- LRU (Least Recently Used) 알고리즘
- 페이지를 교체해야 할 때, 주기억장치에 올라온 페이지들 중에서 가장 오랫동안 사용되지 않았던 페이지를 선택해서 제거하는 기법
- LFU(Least Frequently Used)알고리즘
- 페이지를 교체해야 할 때 페이지들 중에서 사용 빈도가 가장 낮은 페이지를 선택해서 제거하는 기법
2. 파일 관리
파일 시스템

- 파일은 보조기억장치에 저장된 연관성 있는 정보(데이터)의 집합
- 프로세스가 파일을 생성할 때 이름을 부여
- 파일을 읽고 쓰는 동작은 운영체제가 담당
FAT(File Allocation Table)
- 트랙(Track)과 섹터(Sector)로 구성
- 간단한 구조로 PC 운영체제 대부분이 지원 - 파일 공유에 적합
- 메모리 카드나 USB 메모리 등에서 사용
- 디스크 오류 등 발생 시 안정성이 떨어짐
- FAT, FAT16, FAT32, VFAT 등 형식이 존재
- exFAT는 파일 크기 한계를 극복 - 최대 512TB까지 저장
NTFS(New Technology File System)
- FAT을 대체하기 위해 개발
- 메타데이터 지원, 성능 개선, 신뢰성 향상 등
- 파일 용량 한계 확장
- FAT32 : 파일 최대 4GB, 드라이브 최대 32GB
- NTFS : 파일 최대 16TB, 드라이브 256TB
- 보안성, 안정성이 뛰어나지만 호환성이 부족
HFS(Hierarchical Technology File System)
- 애플이 개발한 파일시스템
- Mac OS에서 사용
- 파일개수 최대 65,536개
- 파일 용량 최대 2GB
- 1998년 HFS+ 발표
- 2016년 APFS(Apple File System)으로 전환
'컴퓨터학개론' 카테고리의 다른 글
컴퓨터학개론 TIL - 03 컴퓨터 시스템구조 (0) | 2024.04.06 |
---|---|
컴퓨터학개론 TIL - 02 정보의 표현 (0) | 2024.04.06 |
컴퓨터학개론 TIL - 01 디지털 혁명과 컴퓨터 (0) | 2024.04.05 |