- 컴퓨터 구조
- Operating System; OS
- 컴퓨터 구조 동작
- OS 동작
- Process 관리
- Memory 관리
- Storage 관리
- Protection & Security
- Computing Environments
1. 컴퓨터 구조
다음과 같이 4가지로 구성되어 있다
- 하드웨어
- 컴퓨터의 기본 자원들을 제공한다
- ex) CPU, memory, I/O devices
- OS
- 유저와 어플리케이션 사이에서 하드웨어 사용을 조작, 제어한다. 즉, 유저와 하드웨어 사이 중추 역할을 맡는다.
- 어플리케이션
- 시스템 자원이 유저의 컴퓨팅 문제를 해결하는 방법을 정의한다.
- ex) 워드, 컴파일러, 웹 브라우저, DB, 게임
- 유저
- 사람이나 다른 컴퓨터 등을 지칭한다.
2. OS
모든 자원을 효율적으로 관리하며 할당한다.
에러를 방지하고 부적절한 사용을 막기 위해 프로그램 실행을 제어한다.
- 커널(Kernel): 컴퓨터에서 항상 작동하는 하나의 프로그램
- 그 외 시스템과 어플리케이션 프로그램이 있다
- 초기의 컴퓨터에서 부트스트랩 프로그램은 ROM이나 EEPROM(; Electronically Erasable Programmable Read-Only Memory)에 저장되는, 이른 바 Firmware로 동작하였다.
3. 컴퓨터 구조 동작
- 하나의 혹은 다수의 CPU가 bus(parallel)를 통해 공유 메모리에 접근하고 Device Controller와 연결된다.
- I/O devices와 CPU는 동시에 실행할 수 있다.
- 각 Device Controller는 Local buffer를 가지고 있다. 버퍼는 Device(기계적 동작)와 Device Controller(전기 신호) 사이의 속도 차이를 조절한다. 더불어, I/O 작업이 끝났을 때 Interrupt를 통해 CPU에게 알려준다.
-> 일반적으로 Device-Driver 인터페이스를 이용한다
Interrupt
인터럽트(하드웨어 발생)는 인터럽트 Vector를 통해 Service Routine(인터럽트 타입에 따라 어떤 작업을 할 지 결정)으로 이동하고, 벡터에는 서비스 루틴의 주소와 리턴 주소, 레지스터 등이 포함되어 있다.
인터럽트 타입은 다음과 같다.
- Polling: 인터럽트를 하나씩 확인한다
- Vectored Interrupt System: 서비스 루틴이 끝난 후에 돌아올 주소 값을 저장한다
- CPU 1개당 하나의 인터럽트를 수행한다.
- Trap(소프트웨어 발생)은 에러나 유저 요청에 의한 인터럽트이다.
- I/O 작업이 끝나면 CPU에 인터럽트를 걸어 알린다.
I/O 구조
아래 [그림 4]와 같이 I/O 작업이 시작되면,
끝날 때까지 기다리는(waiting) 동기식과
곧바로 유저 프로그램으로 돌아가는 비동기식 I/O가 있다.
- 비동기식 I/O
-> 시스템 콜: 유저가 I/O 작업을 기다리도록 OS에 요청한다.
-> Device-status table에 각 I/O device를 넣는다.
DMA; Direct Memory Access 구조
OS에 있는 디바이스 driver와 디바이스 Controller는 통신하여 버스를 통해 데이터를 전송한다
Device Controller는 CPU의 개입 없이 (CPU와 동시에)
- 버퍼에서 메인 메모리로
- byte 단위가 아닌 block 단위로
- 버스를 통해
데이터를 전달한다. (인터럽트 빈도를 줄여 속도를 높인다)
저장소 구조
-> 저장소의 속도/ 비용/ 휘발성에 따라 층이 나뉜다
-> Caching: 메인 메모리(CPU가 직접 접근하는 메모리)가 정보를 더 빠른 저장소 시스템에 복사할 때,
Caching을 이용하여 속도를 높인다.
이 이외에도 다른 층에서도 사용한다. (from slower to faster)
-> Multiprocessor 환경에서는 한 CPU에서 값이 바뀌면 버스를 통해 Cache Coherency를 제공해야 한다. (업데이트)
(<-> Single-processor 시스템은 업데이트를 천천히 해도 된다)
4. OS 동작
- Multi-programming
- 작업들을 실행하기 위해 CPU는 항상 하나를 실행하고, 부분 작업들은 메모리에 저장하며, Job Scheduling을 통해 선택되어 실행된다.
- Time-sharing
- 작업들을 계속 switching하며 작업이 실행될 때 유저가 각 작업을 interact 할 수 있게 한다
ex) 반응 속도 < 1 이고 100명이라면, 0.01초마다 switching한다. 이는 타이머를 통해 자원 독차지(hogging)와 무한 루프를 막는다.
-> 다수의 유저가 시스템을 공유하며 생기는 데이터 무단 복제 및 자원 사용 문제가 발생할 수 있다
- Dual-mode (Kernel / User)로 OS는 OS와 시스템을 보호한다
-> 하드웨어에 mode bit을 부여해 kernel(privileged) / user space에 접근한다.
5. Process 관리
프로세스는 실행하는 프로그램에서 일의 단위를 말한다.
Program은 passive entity이라면 / Process는 active entity이다.
이는 처리하는 Thread의 수에 따라 나뉜다
- Single-threaded process: 순차적으로 한 번에 하나씩 처리한다
- Multi-threaded process: 1PC(Program Counter) per Thread
6. Memory 관리
프로세싱 전후의 모든 데이터와 실행되는 모든 명령어는 in Memory
Memory는 다음과 같은 일을 수행한다
- 어느 파트의 메모리가 누구에서 사용되는지 추적한다
- 어느 프로세스와 데이터가 메모리로 들어오고 나가는지 결정한다
- 메모리 공간을 할당하고 제거한다
- I/O 작업에서는 버퍼링(Buffering), 캐싱(Caching), 스풀링(Spooling: 한 작업의 데이터를 읽어 바로 이은 다른 작업에 출력)이 포함된다
7. Storage 관리
OS는 정보 저장소의 균등하고 논리적인 view를 제공한다
-> logical 저장소 단위를 physical하게 추상적으로 File이라 한다. -> Directory
-> 드라이브에 의해 조작되고 이는 속도, 용량, 데이터 전송률, 접근 방식(연속적/ 랜덤) 등 다양한 속성을 가진다.
File-System 관리
-> 파일과 디렉토리를 만들고 삭제한다
-> 파일, 디렉토리 조작을 초기화한다
-> 파일을 다음 저장소로 매핑한다
-> stable 저장소 미디어로 백업한다
Mass-Storage 관리
-> 대용량 저장 장치는 메인 메모리와 장기간 저장될 데이터가 아닌! 데이터를 저장한다
-> Disk 하위시스템은 컴퓨터 속도와 관련된다
-> OS는 저장소를 할당하고, 디스크를 스케줄링 한다
-> 몇몇 저장소(광 저장, 자기테이프)는 빠르지 않아도 된다 -> WORM(Write 1, Read Many) ~ RW(Read-Write) 다양한다
8. Protection & Security
- 보호(Protection)
- OS에 의해 프로세스나 자원 접근을 막는다
- 보안(Security)
- 내부, 외부 공격에 대응하여 방어한다
-> 시스템은 User IDs나 Group ID 등으로 누가 무엇을 접근할지 구분한다
9. Computing Environments
네트워크를 통해 원격 시스템이 같은 자원에 접근할 수 있고, 방화벽으로 보호한다
- Client-Server Computing
- Server는 Client 요청, 파일 접근에 따라 인터페이스를 제공한다
- Peer-to-Peer Computing
- Distributed 시스템 모델(각자의 지역 메모리)이다.
- 모든 노드가 client 혹은 server 역할을 수행한다.
- ex) Torrent, Napster
- 파일 전송, 프린터 공유 같은 간단한 작업에 사용
- Web-based Computing
- 언제 어디서나 웹에 접근한다.
- Cloud Computing
- 클라우드 자원에 접근할 수 있는 shared pool에 네트워크 접근한다.
- ex) Xaas(Everything as a Service)
'OS' 카테고리의 다른 글
[OS][운영체제] 6. Process Synchronization / 프로세스 동기화(순서화) (0) | 2021.05.05 |
---|---|
[OS][운영체제] 5. CPU Scheduling / CPU 스케줄링 (0) | 2021.04.23 |
[OS][운영체제] 4. Threads / 스레드 (0) | 2021.04.23 |
[OS][운영체제] 3. Processes / 프로세스 (0) | 2021.04.23 |
[OS][운영체제] 2. Operating-System Structures / OS의 구조 (0) | 2021.04.22 |