🖥️ Operating System
OS: Operating System
정의
컴퓨터 시스템을 운용하는 소프트웨어
협의
- 커널: 운영체제의 핵심 부분으로 메모리에 상주하는 부분
광의
- 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함
목적 및 특징
목적
- 컴퓨터 시스템의 자원을 효율적으로 관리
- 프로세서, 기억장치, 입출력 장치 등의 효율적 관리
- 사용자 간 형평성 있는 자원 분배
- 주어진 자원으로 최대한 성능
- 사용자/프로그램들이 동시에 독자적으로 수행되는 것과 같은 환경 제공
- 하드웨어를 직접 다루는 부분 대행
- 사용자 및 운영체제 자신 보호
- 프로세스, 파일, 메시지 등을 관리
특징
- 시스템 서비스를 애플리케이션에 제공
- 앱과 하드웨어 사이 API
- 프로세스, 자원, 유저 인터페이스를 관리
분류
- 동시 작업 가능 여부
- 사용자의 수
- 처리 방식
동시 작업 가능 여부
- 단일 작업
- 한번에 하나의 작업만 처리
- 다중 작업
- 동시에 두개 이상의 작업 처리
사용자의 수
- 단일 사용자
- 다중 사용자
처리 방식
- 일괄 처리(Batch Processing)
- 작업 요청의 일정량을 모아서 한꺼번에 처리
- 작업이 완전히 종료될 때까지 기다려야 함
- 시분할(Time Sharing)
- 여러 작업 수행 시 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
- 일괄 처리 시스템에 비해 짧은 응답 시간
- Interactive
- 실시간(Realtime)
- 정해진 시간 안에 어떤 일이 종료됨이 반드시 보장되어야 함
- 로봇 제어
- 개념 확장
- Hard Realtime System(경성 실시간)
- 원자로/미사일 제어, 반도체 공장/장비
- Soft Realtime System(연성 실시간)
예시
- UNIX
- 코드의 대부분을 C언어로 작성
- 높은 이식성
- 최소한의 커널 구조
- 복잡한 시스템에 맞게 확장 용이
- 소스 코드 공개
- 프로그램 개발에 용이
- 다양한 버전
- System V, FreeBSD, SunOS, Solaris
- Linux
- DOS(Disk Operating System)
- MS에서 1981년 IBM-PC를 위해 개발
- 단일 사용자 운영체제, 메모리 관리 능력 한계(주 기억 장치 640KB)
- MS Windows
- MS의 다중 작업용 GUI 운영 체제
- Plug And Play, 네트워크 환경 강화
- DOS용 프로그램과 호환성 제공
- 불안정
- 풍부한 지원 소프트웨어
- Mobile Device OS
- iOS, Android
구조
- CPU 스케쥴링
- 메모리 관리
- 입출력 관리
- 파일 관리
- 프로세스 관리
- 보호 시스템
- 네트워크
- 명령어 해석기
Bootstrap
- 컴퓨터를 켜면 실행되는 첫번째 프로그램
- OS를 load
작동
프로그램의 실행
시작
- File System
- Virtual Memory
- Address Translation
- Physical Memory
Kernel Address Space
- Kernel Code
- System Call, Interrupt 처리 코드
- 자원 관리를 위한 코드
- 편리한 서비스 제공을 위한 코드
- PCB: Process Control Block
사용자 프로그램이 사용하는 함수
- Function
- 사용자 정의 함수
- 자신의 프로그램에서 정의한 함수
- 라이브러리 함수
- 자신의 프로그램에서 정의하지 않고 갖다 쓴 함수
- 자신의 프로그램 실행 파일에 포함되어있다.
- 커널 함수
- OS 프로그램의 함수
- 커널 함수 호출 == System Call
프로그램의 실행
Multi-Programming
- 한번에 두개 이상의 프로그램을 돌린다.
- 여러개의 프로세스를 동시에 메모리에 유지한다.
- CPU 활용도를 높이기 위해
Multi-Tasking == Multi-Processing
- Concurrency VS Parallelism
- Multi-Programming의 논리적 연장선
- CPU는 할 일을 빠르게 바꿀 수 있기 때문에
- 유저는 각 작업이 돌아가는 동시에 상호 작용 가능
- CPU 스케쥴링
- 여러개 프로세스가 동시에 돌아갈 수
- 시스템은 어떤 프로세스를 돌릴지 선택해야함
두개의 모드
정당하지 못한 프로그램이 다른 프로그램에 영향을 줄 수 없게 함
- user mode
- kernel mode
가상화
- 한개의 컴퓨터 하드웨어를 추상화하여
- 여러개의 다른 실행 환경을 사용할 수 있게 함
서비스
OS는 프로그램 실행을 위한 환경을 제공한다.
- UI
- 프로그램 실행
- I/O 작업
- 파일 시스템 조작
- 통신
- 오류 감지
- 자원 할당
- 로깅
- 보호, 보안