출처) 숙명여자대학교 소프트웨어학부 김주균 교수님 '운영체제' 수업 & [OS? Oh Yes!] , 220303
1. 운영체제
- 컴퓨터의 여러 응용 프로그램을 설치되게 해주고, 여러가지 장치를 효율적으로 작동하도록 하며, 사용자가 컴퓨터를 손쉽게 이용할 수 있도록 해주는 프로그램의 집단
- 하드웨어의 여러 부분을 건드리는 경우가 많기 때문에 하드웨어에 의존적인 경우가 많고, 따라서 이전에는 하드웨어 회사마다 자신만의 OS를 갖고 있었음
- 크게 사용자 인터페이스(User Interface)와 자원 관리(Resource Management)를 위한 프로그램의 집합으로 설명할 수 있음
2. 운영체제 변천사
2-1. 수동식 계산기
- 기원전 3000년 경 중국에서 발명된 주판이 발판이 됨
- 존 네피어 봉, 파스칼의 톱니바퀴 계산기, 라이프니츠의 계산기 등
- 이 당시에 운영체제는 존재하지 않았음
2-2. 자동식 계산기
- 배비지의 증기기관으로 작동되는 해석장치를 시작으로 홀러리스의 천공기 등이 있으며
- 에이컨의 MARK Ⅰ은 23자리 숫자의 가감을 매초 3회, 곱셈은 3초에 1회씩 계산이 가능했음
- 이 때에도 운영체제는 없었으며 소수의 기술자에 의해 수동으로 조작되었음
2-2-1. 1세대 운영체제 (1940-1950)
- 진공관 컴퓨터 시기
- ABC(45개의 진공관) → ENIAC(최초의 컴퓨터) → EDSAC(폰 노이만 2진 부호 체계) → UNIVAC-Ⅰ → IBM 701 → IBM 305(자기 디스크 장치 채택) 등
- IBM 701에 와서 비로소 운영체제의 효시라 할 수 있는 기능 장착됨 → "일괄처리 시스템"
일괄처리 시스템 (Single-stream Batch Processing Systems)
- 다수 개의 프로그램을 읽어 저장해놓되, 한 번에 한 개씩의 프로그램을 실행시키는 방식
- 다음 작업을 처리할 때의 시간 절약
Batch
- 초창기: 작업이 차례대로 한 개씩 처리된다는 뜻. 한 개의 작업이 시작되면 그 작업이 끝날 때까지 다른 작업은 기다려야 함
- 이후: 일괄처리를 하되 다중 프로그래밍을 하는 Batch로 발전함
- 작업이 끝날 때까지 사용자의 중간 개입이 허용되지 않음
2-2-2. 2세대 운영체제 (1960년대 전반기)
- 트랜지스터 컴퓨터 + 자기코어 기억장치(주기억장치로 사용), 자기 디스크 팩(보조기억장치로 사용)
- UNIVAC-Ⅱ → IBM 1400시리즈(크기 축소, 속도 증가)
- 어셈블리언어, FORTRAN, COBOL 등 등장
- 운영체제는 컴퓨터에 장착된 다양한 주변기기들을 효율적으로 관리하는 데 관심
- Multiprogramming System & MultiProcessing System
- Timesharing System & Interactive System
- Realtime System
폰 노이만의 "내장 프로그램" 개념
- 어떠한 작업도 실행되기 위해서는 주기억장치에 있어야 한다.
다중 프로그램 시스템 (Multiprogramming System)
- 다수 개의 작업을 CPU에 넣어놓는 방식
다중 처리 시스템 (Multiprocessing System)
- 여러 개의 처리장치(CPU)를 장착하여 동시에 여러 작업을 병렬로 실행하는 방식
- CPU가 2개 이상
다중 처리 시스템은 여러 작업이 동시에 진행된다고 하였지만, 실행이 될 때 주기억장치에 있어야하기 때문에
다중 처리를 위해서는 다중 프로그래밍이 필요하다.
시분할 시스템 (Timesharing System)
CPU가 처리할 수 있는 시간을 작업 수에 맞춰 분할하여 각자에게 일정량만큼씩 분배하여 번갈아가며 처리하는 방식
시분할 시스템을 위해서는 다중 프로그래밍이 필요하다.
대화식 시스템 (Interactive System)
시분할 시스템으로 사용자에게 바로바로 응답할 수 있게 되었다.
→ 모니터, 키보드, 마우스 등을 이용해 시스템과 사용자가 대화하듯이 일을 처리해가는 방식
다중 프로그램 시스템으로 인해 시분할 시스템이 가능하게 되었고, 시분할 시스템을 위해 대화식 시스템이 필요하다.
2.2.3. 3세대 운영체제 (1960년대 후반기 - 1970년대)
- 집적회로(IC)의 개발 -> CPU에 적용
- 범용 컴퓨터 시스템 -> 컴퓨터 다양한 용도로 사용됨
- IBM 360계열: batch 시스템 기본적으로 탑재
- DEC: interactive 시스템 탑재
- 다중모드 시분할 시스템(Multi-inmode)
- 일괄처리(batch), 시분할(time-sharing), 실시간 작업(real-time) 모두 지원
- 기본적으로 시분할, 필요한 경우 batch, 실시간 등 지원함
- TCP/IP 표준과 함께 근거리 통신망(LAN) 등장
- UNIX 운영체제 출현
- UNIX 이전에는 각 하드웨어마다 운영체제 존재, 소스코드 비공개
- 소스코드 공개로 자연스럽게 널리 퍼져서 다양한 버전이 탄생함
2.2.4. 4세대 운영체제 (1970년대 후반기 - 현재)
- 고밀도 집적회로
- 마이크로프로세서
- 최소의 비용으로 최대의 효과
- 분산 및 병렬 처리 시스템 등장
- 데이터베이스, 인공지능, 운영체제의 표준안에 관한 연구도 활발히 진행
- 모든 pc에 적용됨
3. OS 기능
- UNIX 구성 요소
- 사용자 인터페이스(쉘)
- 장치 관리
- 파일 관리
- 메모리 관리
- 처리기 관리
- 쉘 (사용자 인터페이스)
- GUI가 현재보다 발달하기 전:
- command창에서 명령어 입력
- command interpreter가 명령어 번역 후 명령어 실행파일 실행
- 끝나면 다음 명령어 입력 대기
- command interpreter == 사용자 인터페이스(쉘)
- 모든 os에 command interpreter가 존재함. unix에서는 쉘이라는 이름으로 존재하는것
- unix에서 /bin 디렉터리에 있는 실행파일들이 command 실행파일들임
- 시스템에서 쓸 수 있는 모든 command들만으로 만들어진 프로그램: command procedure
- 프로그램 설치할 때 기본 환경 확인, 설치, path 설정, 설정완료 등 모든 과정이 command로 이루어짐
- 이 설치 프로그램: command precedure
- 쉘이 command procedure까지 합쳐서 의미하는 경우도 있음
4. OS의 위치
- 운영체제는 크게 커널과 유틸리티 프로그램으로 나눔
- 커널
- 운영체제의 기능들 중 빈번하게 사용되는 부분
- 부팅될 때 주기억장치에 적재되어 종료될 때까지 상주
- 유틸리티를 따로 둔 이유는 주기억장치의 용량 부족
- 사용자 인터페이스의 대부분이 유틸리티에 속함
- IO.SYS, MSDOS.SYS, COMMAND.SYS 등이 커널에 속함
- 커널 중에서도 더 빠른 실행이나 높은 수준의 보호가 요구되는 프로그램들은 펌웨어 형태인 ROM이나 PLA로 만들어 놓음
- 듀얼모드
- 유저모드 + 커널모드
- 일반 사용자가 운영체제나 시스템 등을 임의로 수정하는 것을 막기 위해 그러한 일들은 운영체제가 담당하도록 커널 모드에서 실행
- 사용자 프로그램이나 응용 프로그램은 유저모드에서 실행
- 프로그램이 실행될 때 유저모드와 커널모드가 번갈아가면서 실행됨
- ex)
total = 0
for i in range(1, 50):
total += i
print(total)
이건 소스코드이긴 하지만,
컴파일이 될 때 print문은 모니터, 프린터 등 다른 HW를 건드려야하기 때문에 system call로 바뀐다.
그리고 실행시키면 유저모드에서 실행되다가, system call을 만나면 커널모드로 바뀐다.
I/O 담당 운영체제가 실행되어 print 대상 device를 확인하고, device가 실행중인지 확인 후 입출력을 실행한다.
입출력이기 때문에 time sharing system 방식으로 cpu가 작동한다.
end를 만나면 프로그램이 끝나며 다시 유저모드로 돌아간다.
이처럼 간단한 프로그램에서도 유저모드와 커널모드가 번갈아가며 작동한다.
'Software > OS' 카테고리의 다른 글
[OS] 4장. CPU 스케줄링 (0) | 2022.04.18 |
---|---|
[OS] 3장. 프로세스와 스레드 (0) | 2022.04.11 |
[OS] 2장. OS 상식과 인터럽트 (0) | 2022.04.10 |