컴퓨터 시스템의 구성요소
- 하드웨어
- 운영체제
- 응용 프로그램
- 사용자
운영체제의 정의
컴퓨터에서 항상 실행되는 하나의 프로그램
→ 이것을 보통 커널이라고 함
→ OS에서 핵심적인 역할
커널에서 두 가지 타입의 프로그램
1. 시스템 프로그램
2. 애플리케이션 프로그램
전통적인 컴퓨터 시스템의 구성
– 하나 이상의 CPU
– 공통된 버스에 연결된 여러 디바이스 컨트롤러
부트스트랩 프로그램
– 컴퓨터 전원을 켤 때 실행되는 첫 번째 프로그램
– OS를 메모리에 로드해주는 역할
인터럽트
I/O 디바이스에서 입력이 발생하여 이 정보를 CPU에 전달할 때 발생
– 하드웨어는 언제든 인터럽트 유발 가능
– 보통 시스템 버스를 통해서 CPU에 신호 전달
폰 노이만 아키텍처
일반적인 명령어 실행 주기
– 먼저 메모리에서 명령어를 가져와서 (fetch) 해당 명령어를 명령어 레지스터에 저장한다.
– 그런 다음 명령어가 해독되고 피연산자가 메모리에서 가져와져 일부 내부 레지스터에 저장될 수 있다.
– 피연산자에 대한 명령이 실행(execute)된 후 결과가 메모리에 다시 저장될 수 있다.
저장 장치 계층
다양한 스토리지 시스템이 계층 구조로 구성되는 기준
– 저장 용량
– 접근 시간 (속도)
I/O 구조
OS 코드의 대부분은 I/O 처리다.
※ DMA = Direct Memory Access
컴퓨터 시스템 구성 요소의 정의
CPU
명령을 실행시키는 하드웨어
프로세서, Processor
하나 이상의 CPU를 포함하는 물리적인 칩
코어, Core
CPU의 백 연산 유닛
멀티코어, Multicore
동일한 CPU에 여러 컴퓨팅 코어를 포함
멀티프로세서, Multiprocessor
다중 프로세서 포함
SMP, Symmetric Multiprocessing
각 CPU 프로세서가 모든 작업을 수행하는 가장 일반적인 다중 프로세서 시스템
Multi-core 디자인
Multiprogramming
– 한 번에 한 개 이상의 프로그램이 실행
– CPU 사용률을 높이기 위해 동시에 여러 프로세스를 메모리에 유지
Multitasking (=multiprocessing)
다중 프로그래밍의 논리적 확장
– CPU가 작업을 자주 전환하여 사용자가 실행 중인 각 작업과 상호 작용할 수 있도록 한다.
– Concurrency(동시성)와 parallelism(병렬성)의 차이 이해하기
CPU 스케줄링
– 여러 프로세스가 동시에 실행할 준비가 된 경우 시스템은 다음에 실행할 프로세스를 선택해야 한다.
– CPU 효율을 가장 높일 수 있는 방법은 무엇?
두 가지의 분리된 작동 모드
사용자 모드(user mode)와 커널 모드(kernel mode)
→ 잘못된 프로그램으로 인해 다른 프로그램이 잘못 실행되지 않도록 하기 위해
→ 커널 모드가 아니면 직접적으로 하드웨어 제어 불가능
가상화, Virtualization
단일 컴퓨터의 하드웨어를 여러 다른 실행 환경으로 추상화할 수 있는 기술
VMM, Virtual Machine Manager
– VMware, XEN, WSL(Windows System for Linux), ...
다양한 컴퓨팅 환경의 운영체제
– 전통적인 컴퓨팅
– 모바일 컴퓨팅 (e.g. Android, iOS)
– 클라이언트-서버 컴퓨팅 (e.g. Web)
– P2P, Peer to Peer 컴퓨팅: 인터넷에서 개인과 개인이 직접 연결되어 파일을 공유
– 클라우드 컴퓨팅 (e.g. AWS, Azure, GCP)
– 실시간 임베디드 시스템
OS는 프로그램 실행을 위한 환경을 제공
– User Interface
– Program execution
– I/O operation
– File-system manipulation
– Communications
– Error detection
– Resource allocation
– Logging
– Protection and security
'CS > OS' 카테고리의 다른 글
[운영체제] 01. 운영체제가 뭐길래? (0) | 2022.05.26 |
---|