운영 체제의 분류
동시 작업 가능 여부
- 단일 작업(single tasking) : 한 번에 하나의 작업만 처리
- ex) MS-DOS -> 한 명령의 수행 끝나기 전에 다른 명령어 수행X
- 다중 작업(multi tasking) : 동시에 두 개 이상의 작업 처리
- ex) UNIX, MS Windows -> 한 명령 수행 끝나기 전에 다른 명령어 수행O
사용자의 수
- 단일 사용자(single user) : 한 대의 컴퓨터에 한 사용자만 접속O
- 다중 사용자(multi user) : 한 대의 컴퓨터에 여러 사용자가 동시접속O
- 보안 문제 등 해결 필요
- ex) UNIX, NT server
처리 방식
- 일괄 처리(batch processing)
- 작업 요청 모아서 한꺼번에 처리
- 작업이 완전 종료될 때까지 기다려야 함
- pc가 편한대로 처리, 현재 사용X
- ex) 초기 Punch Card 처리 시스템
- 시분할 처리(time sharing)
- 여러 작업 수행시 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
- 사용자에게 자원을 번갈아가면서 할당 -> 혼자 쓰는것 같은 환상 제공
- 일괄 처리 시스템에 비해 응답 시간 짧음
- ex) UNIX
- interactive한 방식 <-> batch processing
- 실시간 처리(realtime OS)
- 정해진 시간 안에 반드시 종료되어야 하는 시스템을 위한 OS
- 실시간 시스템의 개념 확장
- Hard realtime system(경성 실시간 시스템)
- deadline을 지키지 않으면 큰일남
- ex) 원자로/공장 제어, 미사일, 반도체 장비 등
- Soft realtime system(연성 실시간 시스템)
- deadline 어기면 문제 생기지만 엄청 큰 문제는 아님
- ex) 동영상 재생 시 초당 24프레임인 deadline을 못지키면 영상 끊김 현상
몇 가지 용어
- 컴퓨터에서 여러 작업을 동시에 수행하는 것을 의미하는 용어들
- Multitasking : 컴퓨터 안에서 여러 개 프로그램을 동시에 돌리는 것
- Multiprogramming : 메모리에 여러 프로그램이 올라가 있음 강조
- Time sharing : CPU의 시간을 분할해서 나누어 쓴다는 의미 강조
- Multiprocess
- Multiprocessor : 하나의 컴퓨터에 여러 CPU (processor)가 여러 개 있음을 의미
운영 체제의 예
- 유닉스(UNIX) -> 서버를 위한 OS
- 어셈블리 언어로 HW 제어 어려움 -> C언어 만듬(사용자가 HW 효율적으로 관리 가능) -> C언어로 유닉스 만듬
- 어셈블리 언어로 작성 시 HW 바뀔 때 마다 다시 작성
- C언어로 작성 시 높은 이식성과 확장성 지님
- 최소한의 커널구조, 시스템에 맞게 확장 용이
- 다양한 버전
- System V, FreeBSD, SunOS, Solaris
- Linux
- DOS(Disk Operating System)
- MS사의 개인 사용자용 OS 만듬
- 단일 사용자 OS, 메모리 관리 능력의 한계
- MS Windows
- MS사의 다중 작업용 GUI 기반 OS
- 풍부한 지원 소프트웨어
- Handheld device를 위한 OS
- 안드로이드, IOS -> SW 플랫폼 or OS
컴퓨터 시스템 구조
- mode bit :
- PC(Program Counter) : 다음번에 실행할 레지스터의 메모리 주소를 가지고 있음
- I/O device controller : 모든 I/O 장치를 전담하는 CPU
- local buffer : 각 device가 갖고 있는 일종의 메모리, 작업공간
- 시스템 콜
인터럽트(Interrupt) -> 현재 OS 구동 방식
- 인터럽트 당한 시점의 레지스터와 PC를 저장한 후 CPU의 제어를 인터럽트 제어 루틴에 넘김
- Interrupt(하드웨어 인터럽트)
- Trap(소프트웨어 인터럽트)
- Exception : 프로그램이 오류를 범한 경우
- System call : 프로그램이 커널 함수를 호출한 경우
동기식 입출력과 비동기식 입출력
동기식 입출력(synchronous I/O)
- I/O 요청 후 입출력 작업이 완료된 후에야 프로그램에 제어가 넘어감
- 구현방법 1
- I/O가 끝날 때까지 CPU를 낭비
- 매시점 하나의 I/O만 일어날 수 있음
- 구현방법 2
- I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗음
- I/O 처리를 기다리는 줄에 그 프로그램을 줄 세움
- 다른 프로그램에게 CPU를 줌
비동기식 입출력(asynchronous I/O)
- I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감
DMA(Direct Memory Access)
- 빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해 사용
- I/O 작업이 바이트 단위가 아닌 block 단위로 인터럽트 발생
reference
운영체제 - 이화여자대학교