1. 운영체제
Operating System
사용자가 컴퓨터를 쉽게 다룰 수 있는 환경을 제공해주고 시스템 자원들을 효율적으로 관리해주는 소프트웨어
1) 운영체제의 역할
- 편리한 User Interface(GUI, CUI) 제공
- 효율적인 HW, SW 자원 관리
- 프로세스 관리(스케쥴링)와 쓰레드 관리
- 시스템 보호
2) 운영체제의 구조
깊은 순서대로 [하드웨어 -> 드라이버 -> Kernel -> System Call Interface -> Shell -> 응용 프로그램]이다. 여기서 드라이버 -> Kernel -> System Call Interface -> Shell 부분이 운영체제다.
(1) 드라이버
- 하드웨어를 제어한다.
(2) Kernel
- 운영체제의 핵심이 되는 프로그램들중 하나로 시스템의 모든 것을 통제한다.
※ 커널은 단일 구조, 계층 구조, 마이크로 커널 구조가 있다. 마이크로 커널 구조란 커널에 필수 기능만 포함하고 기타 기능은 사용자 영역에서 수행하는 구조이다.
(3) System Call Interface
- 운영체제가 제공하는 서비스에 대한 추상화 계층이며, 응용프로그램과 Kernel의 통로 역할을 한다. 이로써 컴퓨터 자원에 대한 직접 접근을 차단해준다.
※ modebit : System Call이 동작할 때 커널 모드(0)와 유저 모드(1)를 구분하기 위한 비트다. 유저 모드는 컴퓨터 자원에 함부로 침범하지 못하는 모드고, 커널 모드는 모든 컴퓨터 자원에 접근할 수 있는 모드다. 예를 들어, 파일 시스템의 파일에 접근할 때는 반드시 시스템콜을 통해 커널 모드로 들어가서 파일을 읽고 그 이후에는 유저 모드로 나와서 이후 로직을 수행한다.
(4) Shell
- Kernel을 감싸고 있는 층이며, 바로 위에 언급한 System Call Interface를 제공하는 역할을 한다.
3) 운영 체제의 구분
(1) 동시 사용자 수
(2) 동시 실행 프로세스 수
(3) 작업 수행 방식
<1> 순차 처리 시스템
<2> Batch Processing System(일괄 처리 시스템)
- 시스템 지향적
- 장점 : 자원 공유, 처리 효율 향상(시스템 입장)
- 단점 : 같은 유형의 작업들이 모이기를 기다려야 하기 때문에 생산성이 저하될 수 있고 응답 시간이 김(사용자 입장)
<3> Time Sharing System(시분할 시스템)
- 사용자 지향적
- 여러 사용자가 자원을 동시에 사용
- 장점 : 응답시간 단축, 생산성 향상(사용자 입장)
- 단점 : 통신 비용 증가, 동시 사용자수 증가에 따른 시스템 부하 가능성
<4> Personal Computing
- 개인이 시스템 전체를 독점
- 여러 사용자들을 처리하지 않아도 되기 때문에 OS가 상대적으로 단순함
<5> Parallel Processing System(병렬처리 시스템)
- 단일 시스템 내에서 둘 이상의 프로세서 사용
- 자원 공유, 성능 향상
- 신뢰성 향상 : 한 프로세서가 고장나도 정상 동작이 가능하게 설계 가능
- 프로세서간 관계와 역할 관리가 필요
- CPU가 많아질 경우 공간적 한계 있음
<6> Distributed Processing System(분산 처리 시스템)
- 네트워크를 기반으로 구축된 병렬처리 시스템
- 물리적인 분산
- 각 구성 요소들간의 독립성을 유지하면서 공동 작업도 가능
- 장점 : 성능, 신뢰성, 확장성이 좋음
- 단점 : 구축, 관리가 어려움.
<7> Real-time System(실시간 시스템)
- 제한시간 내에 서비스 제공
4) 운영체제의 기능
(1) 프로세스(Process) 관리
- 프로세스 : kernel에 등록된 실행 단위, 실행중인 프로그램
- 프로그램 : 컴퓨터에게 주어지는 명령어의 집합체
- PCB(Process Control Block) : 프로세스 관리에 필요한 정보가 저장되어 있는 곳
(2) 프로세서(Processor) 관리
- 프로세서 : 프로세스를 동작시키는 하드웨어
(3) 메모리 관리
(4) 파일 관리
- 파일 : 논리적 데이터 저장 단위
(5) 입출력 관리
(6) 보조 기억 장치 및 기타 주변장치 관리
2. 하드웨어
1) 프로세서 : 연산 수행, 모든 컴퓨터 장치의 동작 제어
(1) 프로세서 종류
- CPU(중앙처리장치)
- GPU(그래픽카드)
- 응용 전용 처리장치
(2) 레지스터
- 프로세서 내부에 있는 메모리
- 프로세서가 사용할 데이터 저장
- 컴퓨터에서 가장 빠른 메모리
(3) 레지스터의 종류
<1> 가시 레지스터 : 사용자가 볼 수 있는 레지스터
- 데이터 레지스터
- 주소 레지스터
<2> 불가시 레지스터 : 사용자가 볼 수 없는 레지스터
- 프로그램 카운터(PC) : 다음에 실행할 명령어의 주소 보관
- 명령어 레지스터(IR) : 현재 실행하는 명령어를 보관
- 누산기 : 연산 데이터를 일시적으로 저장
- 메모리 주소 레지스터(MAR)
- 메모리 버퍼 레지스터(MBR)
2) 메모리 : 저장/기억장치. 프로그램, 사용자 데이터 등을 저장
메모리 종류
(1) 레지스터 : 가장 용량이 작고 속도가 빠르고 값이 비쌈
(2) 캐시
- 프로세서 내부에 있는 메모리.
- CPU와 메인 메모리의 속도 차이에 의한 병목 현상을 해소함.
- 하드웨어적으로 관리됨
- 해당 데이터 블록이 캐시 안에 존재하는 것을 cache hit라고 하고, 존재하지 않는 것을 cache miss라고 한다.
- 예) L1 캐시, L2 캐시
※ 데이터 블록 : 캐시는 해당 데이터를 데이터 블록째로 가져온다.
※ 지역성 : 캐시는 지역성의 원리를 따른다.
- 공간적 지역성 : 참조한 주소와 인접한 주소를 참조하는 특성 - 예) 순차적 프로그램 수행
- 시간적 지역성 : 한 번 참조한 주소를 다시 참조하는 특성 - 예) 반복문
※ 병목 현상 : 하나의 구성 요소로 인해 전체 시스템의 성능이 제한을 받는 현상
(3) 주기억장치(메인 메모리)
- 프로세서가 수행할 프로그램과 데이터를 이 곳에 옮겨야 실행할 수 있음.
- CPU와 보조기억장치의 속도 차이에 의한 병목 현상을 해소함.
- 예) DRAM 등
(4) 보조기억장치(스토리지)
- 가장 용량이 크고 속도가 느리고 값이 쌈
- 프로세서가 직접 접근할 수 없음.
- 여기서 메인메모리 자체 용량보다 큰 용량을 가지는 프로그램은 가상 메모리를 이용한다.
- 예) 하드 디스크 등
※ 가상 메모리 : 하드 디스크의 일부를 메모리처럼 사용
3) 주변 장치 : 프로세서와 메모리를 제외한 하드웨어들
(1) 주변 장치 종류
<1> 입력 장치 - 키보드, 마우스, 터치 인터페이스 등
<2> 출력 장치 - 모니터, 프린터, 스피커 등
<3> 저장 장치 - USB, CD 등
<4> 기타 주변 장치 - 네트워크 모뎀(변복조기) 등
(2) 장치 드라이버 : 주변 장치 사용을 위한 인터페이스 제공
※ 인터페이스 : 상호 간의 통신을 위한 프로토콜
4) 시스템 버스 : 하드웨어들이 데이터 및 신호를 주고 받는 물리적인 통로
(1) 종류
<1> 데이터 버스 : 데이터 버스를 구성하는 배선 수는 프로세서가 한 번에 전송할 수 있는 비트 수(워드)를 결정.
<2> 주소 버스 : 주소 버스를 구성하는 배선 수는 프로세서와 접속할 수 있는 메인 메모리의 최대 용량.
<3> 제어 버스 : 프로세서가 시스템의 구성 요소를 제어하는데 사용. 제어 신호로 연산장치의 연산 종류와 메인 메모리의 동작을 결정.
(2) 동작 : 아래 <1> <2> <3> 과정을 반복
<1> 프로그램 카운터(PC)에 저장된 주소를 내부 버스를 이용하여 메모리 주소 레지스터(MAR)에 전달
<2> 메모리 주소 레지스터(MAR)에 저장된 주소에 해당하는 메모리 위치에서 명령어를 인출하고, 이 명령어를 메모리 버퍼 레지스터(MBR)에 저장함. 그리고 제어장치에서는 다음 명령어를 인출할 수 있게 하기 위해 프로그램 카운터(PC)를 1 증가시킴
<3> 메모리 버퍼 레지스터(MBR)에 저장된 내용은 명령어 레지스터(IR)에 전달함
참고 자료 : 김덕수 교수님 - www.youtube.com/playlist?list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN
'OS 개념 정리' 카테고리의 다른 글
[OS] 동기화(2) - OS Solutions (0) | 2021.05.28 |
---|---|
[OS] 동기화(1) - 동기화 기초, SW/HW Solutions (0) | 2021.05.24 |
[OS] Scheduling (0) | 2021.05.19 |
[OS] Thread (0) | 2021.05.13 |
[OS] 프로세스 (0) | 2021.05.12 |
댓글