1. 운영체제의 역할
1. User Interface(편리성)
- CUI
- GUI
- EUCI (Mp3 같은 특수한 목적을 지닌 기기에 탑재된 UI)
2 Resourece management(효율성)
- HW resource(프로페서, 메모리, I/O device 등)
- SW resource(file, apllication, message, signal 등)
3. Process and Thread management
4. System management (시스템 보호)
2. 컴퓨터 시스템의 구성
여기서 System Call Interface, Kernel 2개의 계층 부분이 OS이다.
OS는 하드웨어를 관리하면서 사용자에게 서비스를 제공하는 역할을 한다.
Kernel은 많은 기능을 제공하는데, 사용자가 직접 Kernel을 Access하면 문제가 발생한다.
그 이유는 하드웨어를 제어하는데 문제가 발생할 수 있기 때문이다.
따라서 필요한 기능이 있으면 OS의 Kernel에 요청을 하는데 그 요청하는 통로를 바로 System Call Interface라고 한다.
다른 말로는 Kernel이 제공하는 기능 중에서 사용자가 사용할 수 있는 기능을 모아둔 것을 System Call Interface(시스템 라이브러리)라고 할 수 있다.
3. 운영체제의 구분
1. 동시 사용자 수
Single-user system (단일 사용자)
- 한명의 사용자만 시스템 사용 가능
- 한명의 사용자가 모든 시스템 자원 독점
- 자원관리 및 시스템 보호 방식이 간단하다.
- 개인용장비(PC, Moblile)등에 사용(window , 안드로이드)
Multi-user system (다중 사용자)
- 동시에 여러 사용자들이 시스템 사용함
- 각종 시스템 자원(파일 등)들에 대한 소유 권한 관리 필요함.
- multi-tasking 기능 필요함
- os기능 및 구조 복잡함
- 서버, 클러스터 장비 등에 사용함 (Unix, Linux, Window server 등)
- 다중 사용자의 경우 동시에 여러 사용자들이 시스템을 이용하기 때문에 한정된 자원을 가지고 소유권 문제가 발생 할 수 있다. 따라서 소유권에 대한 관리가 필요함.
2. 동시 실행 프로세스 수
Single-tasking system (단일 작업)
- 시스템 내에 하나의 작업(프로세스)만 존재함
- 하나의 프로그램 실행을 마친 뒤에 다른 프로그램의 실행
- 운영체제의 구조가 간단함
- ex) MS-DOS
Multi-tasking System(Multiprogramming system) (다중 작업)
- 동시에 여러 작업(프로세스)의 수행 가능
- 작업들 사이의 동시 수행, 동기화 등을 관리해야 함
- 운영체제의 기능 및 구조가 복잡
- 예) Unix/Linux, Windows 등
3. 작업 수행 방식
3-0. 순차 처리 (No OS, ~1940s)
최초에 컴퓨터가 탄생했을 때에는 운영체제 개념이 존재하지 않았고, 사용자가 기계어로 직접 프로그램을 작성하였다.
또한 실행하는 작업 별 순차 처리를 하기 때문에 각 작업에 대한 준비 시간이 소요되는 단점이 있었다.
예를들어 어떤 작업자가 C로 짠 코드로 컴퓨터를 세팅하는데 시간이 소요되고 그 이후 다른 작업자가 C로 짠 코드를 짜왔다면 세팅하는 시간이 줄어들 것이다. 그러나 다른언어로 작업자가 짜왔다면 또 시간이 걸릴것이다.
이와 같은 단점(오버헤드)(쓸데없이 소모되는 시간을) 줄이기 위해서는 어떻게 하면 좋을까?
3-1. Batch Systems
- 모든 시스템을 중앙에서 관리 및 운영한다.
- 사용자의 요청작업을 일정 시간 모아 두었다가 한번에 처리한다.
- 시스템 지향적이다.(시스템에서 작업을 모아놨다가 한번에 처리함 >> 효율적이다.)
- 장점
- 많은 사용자가 시스템 자원을 공유함
- 처리 효율이 향상된다.
- 단점
- 생산성이 저하됨. (한번 제출하고 기다려야 하기 때문이다) => 같은 유형의 작업들이 모이기를 기다려야 한다.
- 긴 응답시간
3-2. Time Sharing Systems (시분할 시스템)
프로그램 A제출시 A끝나고 B를 실행하는 형식으로 실행됬었다. 이때 B는 A가 끝날때까지 기다려야 한다.
이러한 문제를 해결하기 위해 나온 시스템이 시분할 시스템이다.
프로그램 ABC가 실행되면 A실행 후 잠깐 멈추고, B실행 후 잠깐 멈추고, C 실행후 잠깐 멈추는 과정을 수행한다. 이러한 방식을 시분할 시스템이라 한다.
여러 사용자가 자원을 동시에 사용
- OS가 파일 시스템 및 가상 메모리 관리함
사용자 지향적(User-oriented)
- 대화형 시스템
- 단말기 사용
단말기 안에는 하드웨어가 있는 것이 아니고 단순히 화면을 그려주고 입력을 전달해주는 역할을 했다.
사용자들은 각각 자신의 터미널들을 통해서 접속했다. 그리고 작업을 한다.
실제 연산은 터미널 서버에서 수행하고 화면은 터미널에 출력하는 방식으로 사용하였다.
- 장점
- 응답시간 단축(약 5초)
- 생산성 향상(프로세서 유휴 시간 감소)
- 단점
- 통신 비용 증가
- 통신선 비용, 보안 문제 등
- 개인 사용자 체감 속도 저하
- 동시 사용자수 증가 >> 시스템 부하 증가 >> 느려짐 (개인관점에서)
3-3. Personal Computing
앞에서 시분할 시스템을 이용하는 유저가 많아지면 느려진다는 단점을 알고 있다.
그렇다면 같이쓰지말고 "개인이 시스템을 전체를 독점하는 시스템"을 만들자! 가 Personal Computing이다.
앞의 시스템들은 CPU를 가능한 많은 연산을 수행하기 위해 쉬지않고 돌리는 것(활용률을 높이는 것)이 목적이였다.
개인 시스템이 되면서 CPU 활용률이 고려의 대상이 아니게 되었다. 얼마나 사용자가 편리하게 시스템을 사용하는 것이 중요하게 된 것이다. 혼자서 운영체제를 사용하다 보니까 OS를 상대적으로 단순하게 구성할 수 있다. (하지만, 다양한 사용자 지원 기능을 지원)
- 장점
빠른 응답시간
- 단점
성능이 낮음
Personal Computing은 혼자쓰다보니까 성능이 매우 낮다는 것이 단점이다. 그렇다면 CPU를 여러개 장착하면 어떨까?
3-4. Parallel Processing System (병렬 처리 시스템)
- 단일 시스템 내에서 둘 이상의 프로세서를 사용
- 동시에 둘 이상의 프로세스 지원
- 메모리 등의 자원 공유 (Tightly-coupled system)
Tightly-coupled system은 CPU는 여러개인데 기타 자원들은 공유해서 사용하는 형태이다.
사용목적
- 성능향상
- 신뢰성 향상
만약 단일 CPU에서 CPU하나가 손상되었다면 시스템이 동작하지 않는다. 하지만 여러개의 CPU를 사용하면 한개의 CPU가 고장나면 다른 CPU가 일을 대신해 줄 것이다. 물론 성능은 떨어지더라도 시스템은 온전히 동작할 것이다. 시스템을 향상시키기 위해 병렬처리 시스템을 사용한다.
만약 Tightly-coupled system에서 기능 확장하는데 제한이 있을 것이다.
예를들어 컴퓨터를 구매해서 CPU를 100개 넣을 수 없다. 공간적, 시스템적으로 제약이 있다.
그렇다면 프로세서를 넣지말고 컴퓨터를 여러개 붙이자 하는것이 Distributed Processing System이다.
3-5. Distributed Processing System (분산 처리 시스템)
네트워크를 기반으로 구축된 병렬처리 시스템(Loosely-coupled system)
- 물리적인 분산, 통신망 이용한 상호연결로 연결하기 쉬움
- 각각 운영체제 탑재한 다수의 범용 시스템으로 구성됨
- 사용자는 분산운영체제를 통해 하나의 프로그램, 자원처럼 사용이 가능하다(은폐성, transparency)
- 각 구성 요소들간의 독립성 유지, 공동작업 가능
- Cluster System(슈퍼컴퓨터), client-server system, P2P 등
- 장점
자원공유를 통한 높은 성능, 고 신뢰성, 높은 확장성
- 단점
구축 및 관리가 어려움
3-6. Real-time Systems
작업 처리에 제한 시간(deadline)을 갖는 시스템
- 제한 시간 내에 서비스를 제공하는 것이 자원 활용 효율보다 중요함
작업의 종류
- Hard real-time task
- 시간 제약을 지키지 못하는 경우 시스템에 치명적 영향
- ex) 발전소 제어, 무기 제어 등
- Sofr real-time task
- 동영상 재생 등
- Non real-time task
4. 운영체제의 구조
1. 커널(Kernel)
OS의 핵심 부분 (메모리 상주)
- 가장 빈번하게 사용되는 기능들 담당
- 시스템 관리(processor, memory 등)
- = 핵, 관리자 프로그램, 상주 프로그램, 제어 프로그램
2. 유틸리티(Utility)
자주 사용하지 않는 기능들..
- 비상주 프로그램
- UI등 서비스 프로그램
단일 구조
- 장점
- 커널 내 모듈간 직접 통신
- 효율적 자원 관리 및 사용
- 기능들 사이에 뭔가를 주고받을 때 바로 바로 요청을 받을 수 있다. (빠르게)
- 단점
- 커널의 거대화
- 요류 및 버그, 추가 기능 구현 등 유지보수가 어려움
- 동일 메모리에 모든 기능이 있어, 한 모듈의 문제가 전체 시스템에 영향 (예, 악성 코드 등)
계층 구조
그래서, 기능별로 따로 떼어서 계층별로 묶자라는 관점이 계층구조 이다. 현재 운영체제들 대부분 이러한 방식을 사용
- 장점
- 모듈화
- 계층간 검증 및 수정 용의함
- 설계 및 구현의 단순화 (각 기능을 구현할 때 그 기능 구현에만 집중할 수 있음)
- 단점
- 단일구조 대비 성능 저하
- 원하는 기능 수행을 위해 여러 계층을 거쳐야 한다.
마이크로 커널 구조
커널이 커지니까 필수 기능만 담자
커널의 크기 최소화
- 필수 기능만 포함
- 기타 기능은 사용자 영역에서 수행
5. 운영체제의 기능
- 프로세스 관리
- 프로세서 관리
- 메모리 관리
- 파일 관리
- 입출력 관리
- 보조 기억 장치 및 기타 주변장치 관리 등..
1. Process Management
프로세스
- 커널에 등록된 실행 단위 (실행 중인 프로그램)
- 사용자 요청/프로그램의 수행 주체(entity)
OS의 프로세스 관리 기능
- 생성/삭제, 상태관리
- 자원 할당
- 프로세스 간 통신 및 동기화(synchronization)
- 교착상태(deadlock) 해결
프로세스 정보 관리
- PCB
중앙 처리 장치(CPU)
- 프로그램을 실행하는 핵심 자원
프로세스 스케줄링(Scheduling)
- 시스템 내의 프로세스 처리 순서 결정
프로세서 할당 관리
- 프로세스들에 대한 프로세서 할당
- 한 번에 하나의 프로세스만 사용 가능
2. Memory Management
주기억장치
- 작업을 위한 프로그램 및 데이터를 올려 놓는 공간
Multi-user, Multi-tasking 시스템
- 프로세스에 대한 메모리 할당 및 회수
- 메모리 여유 공간 관리
- 각 프로세스의 할당 메모리 영역 접근 보호
메모리 할당 방법(scheme)
- 전체 적재
- 장점: 구현이 간단 / 단점: 제한적 공간
- 일부 적재 (virtual memory concept)
- 프로그램 및 데이터의 일부만 적재
- 장점: 메모리의 효율적 활용 / 단점: 보조기억 장치 접근 필요
3. File Management
- 파일: 논리적 데이터 저장 단위
- 사용자 및 시스템의 파일 관리
- 디렉토리(directory) 구조 지원
- 파일 관리 기능
- 파일 및 디렉토리 생성/삭제
- 파일 접근 및 조작
- 파일을 물리적 저장 공간으로 사상(mapping)
- 백업 등
4. I/O Management
입출력(I/O)과정을 반드시 거쳐야 함
입출력을 할때 커널에게 프로세서가 요청을 하고 커널을 통해 실제 입출력장치와 통신하는것을 나타낸다
5. 운영체제가 관리하는 그외 자원들
- Disk
- Networking
- Security and Protection system
- Command interpreter system
- System call interface
응용 프로그램과 OS 사이의 인터페이스
OS가 응용프로그램에 제공하는 서비스
본 포스트는 KOREATECH의 HPC LAB. Duksu Kim 교수님 OS강의를 기반으로 정리한 내용입니다.
상업적 의도가 아닌 공부한 것을 정리해 놓은 목적으로 게시한 포스트입니다.
아래의 출처에서 자세한 내용을 수강하실 수 있습니다.
https://www.youtube.com/playlist?list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN
'CS > OS' 카테고리의 다른 글
[OS] 4. 운영체제 스레드 관리 (Thread) (0) | 2022.03.11 |
---|---|
[OS] 3-2. 프로세스 관리(Interrupt, Context Switching) (0) | 2022.03.09 |
[OS] 3-1. 프로세스 관리 (프로세스 정의, 종류, 상태) (0) | 2022.03.08 |
[OS] 1. 컴퓨터 시스템의 개요 (0) | 2022.03.06 |
[OS] 0. 운영체제 목차 및 키워드 정리 (0) | 2022.03.06 |