운영체제의 역할
- User Interface (편리성)
- CUI (Character user interface)
- GUI (Graphical UI)
- EUCI (End-User Comfortable Interface) : ex) MP3화면
- Resource management (효율성)
- HW resource (processor, memory, I/O devices, Etc)
- SW resource (file, application, message, signal, Etc)
- Process and Thread management
실행의 주체 - System management (시스템 보호)
컴퓨터 시스템의 구성
사용자 / Application이 OS 내부에 Kernel에 직접 접근할 수 없다.
그럼 어떻게 하냐? System Call Interface를 통해 요청하라
즉, System Call Interface란 Kernel이 제공하는 기능들 중에서 사용자가 사용할 수 있는 기능을 모아놓은 것
운영체제의 구분
- 동시 사용자 수
- Single-user system : 한명이 모든 시스템 자원 독점 ex) Windows, android
- Multi-user system : 동시에 여러 사용자들이 시스템을 사용 ex) Unix, Linux
- 각종 시스템 자원(파일 등)에 대한 소유 권한 관리 필요
- 기본적으로 Multi-tasking 기능 필요
- 동시 실행 프로세스 수
- 단일작업 (Single-tasking system)
- 시스템 내에 하나의 작업(프로세스)만 존재
- 하나의 프로그램 실행을 마친 뒤에 다른 프로그램의 실행
- 예) MS-DOS, cmd
- 다중작업 (Multi-tasking system)
- 동시에 여러 작업(프로세스)의 수행 가능
- 예) Unix/Linux, Windows, 창 여러개 띄우기
- 단일작업 (Single-tasking system)
- 작업 수행 방식 (사용자가 느끼는 사용 환경)
- Batch processing system (일괄처리 시스템)
- Time-sharing system (시분할 시스템)
- Distributed processing system (분산처리 시스템)
- Real-time system (실시간 시스템)
작업 수행 방식의 역사
순차처리 (~1940s)
- 운영체제 개념 존재하지 x
- 사용자가 기계어로 직접 프로그램 작성
- 각각의 작업에 대한 준비 시간 소요
- (Java 작업하고~ 다음 작업이 왔는데 Python이야 이거 대로 또 준비하고 돌리고 다음 작업은 C언어야? 계속 반복...)
Batch Systems (1950s~1960s)
모든 시스템을 중앙에서 관리 및 운영
사용자의 요청 작업을 일정 시간 모아 두었다가 한번에 처리
(Java로 짠거 다 모아두고 100개가 모이면 얘네 작업 시작)
시스템 지향적 (System-oriented)
장점
- 많은 사용자가 시스템 자원 공유
- 처리 효율 (throughput) 향상
단점
생산성 (productivity) 저하 : 같은 유형의 작업들이 모일 때까지 기다려야됨..
긴 응답시간 (turnaround time)
- 작업 제출에서 결과 출력까지의 시간 (약 6시간)
Time Sharing System (1960s~1970s)
여러 사용자가 자원을 동시에 사용
- OS가 파일 시스템 및 가상 메모리 관리
사용자 지향적 (User-oriented)
- 대화형 (conversational, interactive) 시스템 : 예전과 달리 응답을 중간 중간에 받을 수 있었다.
- 단말기(CRT) 사용
(CPU에서 프로그램 A, B, C를 시간을 쪼개서 실행)
장점
- 응답시간 (response time) 단축 (약 5초)
- 생산성 (productivity) 향상 : 작업이 끝나면 반응을 바로 받을 수 있으니
- 프로세서 유휴 시간 감소 : cpu를 쉬지 않고 돌릴 수 있다.
단점
통신 비용 증가
통신선 비용, 보안 문제 등
개인 사용자 체감 속도 저하
- 동시 사용자 수 ↑ => 시스템 부하 ↑ => 느려짐 (개인관점에서)
Personal Computing
- 개인이 시스템 전체를 독점
- (이전에는 cpu를 쉬지 않고 돌려서 cpu활용률을 높히는 데 주력함)
- CPU 활용률(utilization)이 고려의 대상이 아님
사용자가 얼마나 편하게 사용하는지!! - 장점
- 빠른 응답시간
- 단점
- 성능(performance)이 낮음 (혼자쓸거니까)
Parallel Processing System (병렬 처리 시스템)
- (컴퓨터안에 cpu를 여러개 박자)
- 단일 시스템 내에서 둘 이상의 프로세서 사용
- Tightly-coupled system : 여러개의 CPU들이 기타 자원(기억장치, 주변장치)들을 공유해서 사용
- 사용 목적
- 성능 향상
- 신뢰성 향상
- 왜 신뢰성? cpu 여러개니까 하나고장나도 다른 cpu에서 대신 일해주니까
- 프로세서간 관계 및 역할 관리가 필요됨
Distributed Processing Systems
(컴퓨터에 100개 cpu를 넣을 순 없으니 컴퓨터를 여러개 붙이자)
네트워크(LAN)를 기반으로 구축된 병렬처리 시스템(Loosely-coupled system)
각 node들을 분산운영체제를 통해 하나의 프로그램, 자원처럼 사용 가능 (은폐성, transparency)
각 구성 요소들간의 독립성 유지, 공동 작업 가능
장점
- 자원 공유를 통한 높은 성능
- 고신뢰성! 높은 확정성
단점
- 구축과 관리(유지보수)가 어려움
ex) cluster system(슈퍼컴), client-server system, p2p 등
Real-time System (실시간 시스템)
- 작업 처리에 제한 시간(deadline)을 갖는 시스템
- 작업(task)의 종류
- Hard real-time task
- 시간 제약을 지키지 못하는 경우 시스템에 치명적인 영향이 있는 작업
- 예를들어, 1초에 온도를 측정하는 발전소가 있는데, 1초내에 온도를 측정 못해서 발전소가 폭발되는 재앙
- Soft real-time task
- 동영상 재생
- youtube 1초에 30장 지켜야하는데, 안되면 화질깨지는 가벼운 경우
- Hard real-time task
운영체제의 구조
- 커널 (Kernel)
- OS의 핵심 부분
- 가장 빈번하게 사용되는 기능을 담당
- 시스템 관리(processor, memory 등) 등
- 동의어
- 핵(nucleus), 관리자(supervisor) 프로그램, 상주 프로그램 (resident program), 제어 프로그램(control program) 등
- OS의 핵심 부분
- 유틸리티 (Utility)
- 운영체제에서 kernel을 제외한 나머지
- 대표적으로 UI
- 비상주 프로그램(메모리에 항상 올려놓지 않는다)
단일구조
커널 또는 운영체제 기능을 하나의 거대한 커널로 모아놓은 것
(main() 안에 코드 다짜버리기)
- 장점
- 커널 내 모듈 간 직접 통신
- 효율적 자원 관리 및 사용
- 커널 내 모듈 간 직접 통신
- 단점
- 커널의 거대화
- 오류 및 버그 발생
- 유지보수가 어려움
- 동일 메모리에 모든 기능이 있으니까, 한 모듈의 문제가 전체 시스템에 영향을 줄 수 있음
- 커널의 거대화
계층구조
기능 별로 따로 나눠서 계층적으로 묶은 것
- 장점
- 모듈화
- 계층간 검증 및 수정이 용이
- 설계 및 구현의 단순화
- (각각의 기능에만 집중하면 되니까~)
- 모듈화
- 단점
- 단일구조 대비 성능 떨어진다
- 원하는 기능을 수행하기 위해 여러 계층을 거쳐야한다...
- 단일구조 대비 성능 떨어진다
마이크로 커널 구조
- 커널의 크기 최소화
- 필수 기능만 포함!
- 메모리관리, 프로세스 간 통신, 프로세스관리
- 기타 기능은 사용자 영역에서 수행
- 필수 기능만 포함!
운영체제의 기능
- 프로세스(Process) 관리
- 프로세서(Processor) 관리
- 메모리(Memory) 관리
- 파일(File) 관리
- 입출력(I/O) 관리
- 보조기억 장치 및 기타 주변 장치 관리 등
Process Management
프로세스(Process)
- 커널에 등록된 실행 단위 (실행 중인 프로그램)
- 사용자 요청/프로그램의 수행 주체
OS의 프로세스 관리 기능
- 생성/삭제, 상태관리
- 자원 할당
- 프로세스 간 통신 및 동기화(synchronization)
- 교착상태(deadlock) 해결
- 여러개의 프로세스가 하나의 자원을 쓰려고 할때 = deadlock
프로세스 정보 관리
- PCB (Process Control Block) 이라는 것도 갖고 있다.
Processor Management
- 헷갈리면 CPU라 생각해라
- 프로그램을 실행하는 핵심자원
- 프로세스 스케줄링 (Scheduling)
- 시스템 내의 프로세스 처리 순서를 결정
- 프로세서 할당관리
- 프로세스들에 대한 프로세서 할당
- (프로세서를 어떤 프로세스한테 줄지)
- 프로세스들에 대한 프로세서 할당
Memory Management
- 일반적으로 메모리라하면은 주기억장치
- Multi-user, Multi-tasking 시스템
- 프로세스에 대한 메모리 할당 및 회수
- 메모리 여유 공간 관리
- 각 프로세스의 할당 메모리 영역 접근 보호
- 메모리 할당 방법(scheme)
- 전체 적재
- 일부 적재
File Management
- 파일 : 굳이 정의하자면 논리적 데이터 저장 단위. 그냥 파일
I/O Management
입출력(I/O) 과정
- OS를 반드시 거쳐야함
Others
- DISK
- Networking
- Security and Protection system
- Etc
'Study > OS' 카테고리의 다른 글
Chapter 05. Process Scheduling (2of4) - FCFS, RR (0) | 2021.06.23 |
---|---|
Chapter 05. Process Scheduling (1of4) (0) | 2021.06.23 |
Chapter 04. Thread Management (0) | 2021.06.23 |
Chapter 03. Process Management (0) | 2021.06.17 |
Chapter 01. Computer System Overview (0) | 2021.06.15 |