반효경 교수님의 운영체제 강의를 수강한 후 작성한 글입니다.
운영체제란 무엇인가?
- 운영체제란
컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어로, 사용자 및 (운영체제를 제외한) 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층이다.
- 협의 : 커널 (주로 사용되는 의미)
커널이란, 운영체제의 핵심 부분으로 메모리에 상주하는 부분을 의미한다.
- 광의 : 커널 뿐만 아니라 각종 주변 시스템 유틸리티(메모리에 상주하지 않는 별도의 프로그램)까지 포함한 개념
운영체제의 목적
- 효율적인 자원의 관리
- 프로세서, 기억장치, 입출력장치(이것들은 HW 자원에 해당) 등의 효율적인 관리가 OS의 핵심 기능이다.
- 형평성 : 사용자 간의 형평성 있는 자원 분배를 지원한다. 특정 프로그램이 지나치게 차별 받는 경우가 발생하지 않도록 관리한다.
- 효율성 : 주어진 자원으로 최대한의 성능을 내도록 관리한다.
- 사용자 및 운영체제 자신의 보호
- 프로세스, 파일, 메시지 등 소프트웨어 자원을 관리
⇨ 이를 위해 실행 CPU 스케쥴링을 수행하거나 메모리 공간을 적절히 분배(여러 프로그램을 동시에 실행시키기 위해)한다.
운영체제의 분류
기준
- 동시 작업 가능 여부
- 사용자 수
- 처리 방식
- 동시 작업 가능 여부
- 단일 작업(single tasking)
- 한번에 하나의 작업만을 처리한다.
- ex) 엘리베이터, MS-DOS 프롬프트
- 다중 작업(multi tasking)
- 동시에 여러 개의 작업 처리
- 요즘 건 대부분 다중 작업 가능
- ex) Windows, Linux, UNIX 등
- 사용자의 수
- 단일 사용자(single user)
- 동시 접속이 불가능하다.
- 단일 작업은 단일 사용자에 포함된다.
- ex) MS-DOS, MS Windows(대체로)
- 다중 사용자(multi user)
- 동시 접속이 가능하다.
- ex) UNIX, NT server, Linux
- 처리 방식
- 일괄 처리(batch processing)
- 작업을 바로 처리하지 않고 작업 요청의 일정량을 모아서 한번에 처리한다.
- 옛날 방식에 해당한다.
- 작업이 완전 종료될 때까지 기다려야 한다.
- interactive하지 않은 방식.
- 시분할(time sharing)
- 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용한다.
- 현대 운영체제의 처리 방식
- 일괄 처리 시스템에 비해 짧은 응답 시간을 가지며 interactive하다.
- 주어진 자원을 최대한 활용한다.
- 실시간(Realtime OS)
- deadline 안에 주어진 일이 반드시 종료되어야 한다.
- Hard realtime system : 무조건 해야 하는 경우, 미사일
- Soft realtime system : 종료되지 않더라도 크게 문제가 되지는 않는 경우, 영화
용어 설명
- 컴퓨터에서 여러 작업을 동시에 수행하는 것을 뜻하는 용어
- Multitasking : 하나의 프로그램이 끝나기 전에 다른 프로그램을 실행할 수 있다.
- Multiprogramming : 메모리에 여러 프로그램이 동시에 올라간다. (메모리 강조)
- Time Sharing : CPU의 시간을 분할하여 나누어 쓴다. (CPU 강조)
- Multiprocess : 여러 프로그램을 동시에 수행한다.
- cf) Multiprocessor : CPU가 여러개 있는 컴퓨터
운영체제의 예
- 유닉스
- 코드 대부분이 C언어로 작성되기 때문에 높은 이식성을 가진다(특정 기계어에만 국한되지 않기 때문)
- 초창기 목적 : 대형 컴퓨터 위한 OS → multitasking & 다중 사용자
- 최소한의 커널 구조로, 커널 크기가 작다.
- 복잡한 시스템에 맞게 확장이 용이하며 소스 코드가 공개되어 프로그램 개발에 용이하다.
- 다양한 버전이 있으며 그 중 Linux는 현재도 소스 코드가 공개되어 있다.
- DOS
- MS사에서 PC 사용 목적을 가지고 개발한 OS
- 단일 사용자용 운영체제이며 메모리 관리 능력의 한계를 가졌다.
- MS Windows
- MS사의 다중 작업용 GUI 기반 운영 체제
- Plug and Play, 네트워크 환경 강화
- DOS 응용 프로그램과 호환성
- (초창기) 불안정성
- 사용자가 많기 때문에 지원 소프트웨어가 풍부하다.
- 그 외
PalmOS, Pocket PC, Tiny OS
운영체제 구조
- 하드웨어
- CPU : CPU 스케쥴링 → 어떤 프로그램한테 CPU를 줄지
- 메모리 : 메모리 관리 → 한정된 메모리를 어떤 프로그램에 얼마나, 어떻게 분배할지
- 디스크 : 파일 관리 → 디스크에 파일을 어떻게 보관할지
- I/O device : 입출력 관리 → CPU보다 IO디바이스의 속도가 현저히 느리기 때문에 입출력 장치들과 컴퓨터 간 정보를 주고 받는 것을 어떻게 관리할지
- 소프트웨어
- 프로세스 관리 : 프로그램 관리
- 프로세스의 생성과 삭제
- 자원 할당 및 반환
- 프로세스 간 협력
- 그 외
- 보호 시스템
- 네트워킹
- 명령어 해석기(command line interpreter) (ex. cmd, bash)
'개발하자 > 🐧 운영체제' 카테고리의 다른 글
운영체제 2. System Structure & Program Execution (0) | 2022.09.18 |
---|