1장 요약
컴퓨터 시스템 요소
하드웨어 – CPU, memory, I/O devices 등
소프트웨어 - 한글, 윈도우, 오피스, 등등 프로그램
운영체제 – Operating System
4. 응용프로그램 – application programs(compilers, web browsers, development kits 등) => 운영체제 위에서 돌아감
5. 사용자 – user
운영체제 역할 – SSD, HD 저장된 게임을 메모리 위에 올려놓고 CPU와 같은 HW자원을 이용하여 게임과 같은 프로그램이 잘 돌아가게 해줌.
컴퓨터시스템, 운영체제 역사 학습함
운영체제의 정의 – 소프트웨어와 하드웨어(CPU, IO장치, 메모리 등) 간의 컴퓨터 자원을 효율적으로 관리를 해서 사용자에게 편안하고 편리한 작업환경을 제공하는 것.
자원 할당자(저장 공간, 메모리 공간, 입출력장치들을 효과적으로 관리), 컨트롤 프로그램, 커널(넓은 의미에서 같은, 항상 실행 중, 특히 시스템 프로그램이 운영체제와 같음)이라고 불림
자원관리 – 추상화, 공유(Time multiplexing(컴퓨터 한 대를 여러명이), Space multiplexing(특정 HW 자원을 실행중인 프로세스를 다른 프로세스에서 작업이 가능하게 함)), Protection(방지), Fairness(독점, 점유를 막음), Performance(운영체제가 항상 최고의 성능을 우선시해서 자원을 관리)
=> HW자원을 효과적으로 관리하여 소프트웨어 프로그램에 환경을 제공해줌.
운영체제의 목적 – 하드웨어의 효율적인 사용하게 만들 수 있도록 편리한 프로그래밍 환경과 복잡한 하드웨어 캡슐화를 통해 자원의 성능을 최대한으로 끌어올려 사용할 수 있도록 지원해 주는 것.
시스템 소프트웨어 계층
<위>User application – Middlewares(어플리케이션과 도구의 중개자 역할) - Software Development Environment(개발환경) - Operating System(Kernel) - Computer System Architecture(HW) - (펌웨어 -> HW의 ROM에 저장, HW 제어기능 수행, 임베디드 분야의 프로그램)<아래>
각각의 I/O장치에는 컨트롤러가 따라붙음 – 각각의 디바이스를 동기화하기 위함!
현재 PC 구조 – 위 IO장치(빠른 처리(그래픽처리)), 아래 IO장치(느린 처리) => 위, 아래구분 기준 = PCI Bus
CPU(데이터 처리)
- Registers(CPU 안에 있는 저장 공간 – 처리해야할 데이터저장)
>PC(Program Counter) – 다음에 실행될 명령어의 주소를 가짐
>IR(Instruction Register) – 명령어를 해석하기 위해 잠시 보관용
>PSW(Program Status Word) – 현재 CPU가 수행하는 처리상황을 나타냄
>General-purpose registers – 일반적인 연산처리, 데이터기억
Instruction Set Architecture
>RISC(간단한 명령어) vs CISC(복잡한 명령어) => 처리속도 RISC가 빠름
-Pipelining(CPU 성능을 향상시킴, 특수한 작업들을 ‘병렬’로 처리시킴)
>Fetch(명령어를 레지스터에 가져다 놓음), Decode(명령어 해석), Execute(디코드(해석)된 명령실행), Write Back(실행결과 저장)
ILP(Instruction-Level Parallelism)
>Superscalar(동적으로 여러 작업 실행) vs VLIW(컴파일러가 동시 가능한 것과 불가능한 것들을 미리 만들어 놓음)
>Simultaneous Multithreading(명령어 동시 수행 가능)
Storage Structure(메모리)
-Main memory – CPU처리 보조역할, 용량이 클수록 좋음
>SRAM(정적, 리플레시x, 캐시 – 이전 기록 저장) vs DRAM(동적, 주기적 리플레시를 해줌 – 내용 유지, 대용량에 적합) => 성능은 SRAM이 좋음
>DDR, QDR, RDRAM
-Secondary storage – 하드디스크, SSD(Solid-State-Drive, 빠름)
-Magnetic disks – 요즘은 잘 사용x
컴퓨터시스템(여러 하드웨어, 여러 명령어 등) - 명령어를 기반으로 해서 CPU에서 연산을 하는 시스템
Interrupt – I/O디바이스에서 요청이 오면 CPU가 하던 일을 멈추고 다른 일을 먼저 수행하고 복귀하는 것. (CPU는 처리속도가 빠른 반면 I/O디바이스들은 처리속도가 느리다.)
Interrupt를 통해서 CPU가 노는 시간을 제거함.
DMA(Direct Memory Access) – I/O디바이스가 CPU를 거치지 않고 직접 메모리에 접근 할 수 있는 것. 이를 통해 보다 빠르게 메모리에 데이터나 자료를 올려놓고 CPU는 메모리에 올라와 있는 데이터를 가지고 처리가 가능하므로 효율성이 증대된다.
Storage hierarchy(계층구조)
-Register, Cache(SRAM), Main memory(DRAM), Secondary storage(SSD, HD), Teriary storage(CD)
<-(상위)쪽으로 갈수록 처리속도 빠르고 ->(하위)쪽으로 갈수록 메모리공간이 크다.
이렇게 구성하는 대표적인 이유는 경제적이 이유가 크다.
Caching
>Write-through(캐시 + 메인메모리 동시, 데이터의 일관성측면 향상) vs write-back(캐시에 저장 -> 한번에 메인메모리에 옮김, but 데이터 불일치 발생가능)
하드디스크에 저장되어있는 데이터가 레지스터로 보내지는 과정
>Magnetic disk –> Main memory –> Cache –> Hardware Register
I/O Structure
>CPU에서 명령을 내릴 때 -> out
>CPU에서 명령을 받을 때 -> in
I/O Control
>Polling – CPU가 지속적으로 I/O 디바이스에게 물어봄(과부화 - 오버헤드가 크다)
>Hardware interrupt(일반적으로 사용) - 장치에서 수행이 완료되면 CPU에게 신호를 줌
Interrupts(I/O -> CPU에게 이벤트 발생을 알림)
Execptions(CPU -> CPU가 자기 자신에게 interrupts하는 것)
>동기화
>Trap(어플리케이션이 OS에 서비스를 요청해서 프로그램이 돌아가는 형태) or Fault(요청을 하지 않음)
DMA(Direct Memory Access) - 하드디스크에서 메모리를 직접적으로 Access를 해서 올려놓는 방식
운영체제는 사용자모드, 커널모드로 구분되어 운영하는 Dual-mode operation으로 운영
Dual-mode operation의 사용이유 – 운영체제를 보호하기 위한 기법, 사용자 모드에서 불법적인 명령을 통해서 운영체제를 해킹을 하고 시스템에 위협을 방지하기 위해서 사용
따라서 사용자 모드에서 불법적인 명령을 실행하면 운영체제의 도움을 받아서 커널모드로 접근할 수 없게 막아버리는 역할을 함
>user mode
>Monitor mode – kernel or system mode
>Privileged instructions -> 오직 커널 모드에서만 사용가능
System call - 사용자모드에서 커널모드로 직접적인 접근을 막아놓았기 때문에 우리는 System call을 활용을 해서 접근을 함, 운영체제에서의 동작을 사용자프로세스가 요청하는 것(API를 통함)
Hardware Protection
>I/O Protection – 내부의 문제를 보호함. Dual-mode operation을 사용하여 보호
>Memory protection – 각 프로세스마다 사용되어야할 메모리주소 범위가 정해져 있는데 다른 프로세스가 이를 접근할 수 없도록 막아줌
>CPU protection – CPU를 어느 한 프로세스가 독점적으로 사용하는 것을 방지함.
History of computer systems
· Mainframe Systems – 초창기 컴퓨터
· batch systems - 초창기 컴퓨터 시스템에서는 어떤 프로세스를 CPU에 하나만 올려서 수행하는 것
· Multiprogramming systems – 메모리에 여러 개의 프로세스를 올려놓아서 CPU가 골라서 수행, CPU scheduling(I/O작업 중 CPU도 다음 작업을 수행하는 것)
· Time-sharing systems – 과거 컴퓨터가 많이 없을 때 하나의 컴퓨터에 여러 사람이 붙어 사용할 때 타임퀀텀을 두어서 계속해서 다른 프로그램을 번갈아가면서 수행하도록 만듦
· Desktop systems – 현재 우리가 사용하고 있는 일반적인 시스템을 의미함
· Parallel systems – 컴퓨터에 여러 개의 CPU를 넣어서 병렬적으로 처리를 가능하게 해서 성능을 높임
>Symmetric multiprocessing(SMP) - 동일한 CPU 여러 개
>Asymmetric multiprocessing – 강력한 CPU 하나와 조금 떨어지는 CPU 여러 개
· Distributed systems – 네트워크 환경을 이용하여 독자적인 OS를 가진 여러 컴퓨터를 이용하는 방법(Loosely coupled system, 네트워크기술 필요)
· Clustered systems - Distributed systems와 마찬가지로 여러 개의 PC을 네트워크로 묶어서 어떤 스토리지로 공유를 함(PS + DS + CS)
· Cloud systems – 위의 것들이 복합적으로 작용해서 현재의 클라우드 시스템이 됨.
· Real-time systems – 어떠한 프로그램을 수행을 할 때 제한시간 내로 반드시 수행을 해야 하는 시스템
· Embedded systems – 자판기나 리모컨과 같은 디지털 제품에서 운영체제가 따로 필요 없는 단순작업을 진행하는 시스템
· Handheld systems – 현재 사용하고 있는 스마트폰 시스템
OS Classification
>Monolothic Kernel – 어플리케이션 제외 나머지 시스템을 처리, 효율적 관리, 빠른 처리 속도, 하나의 오류가 전체에 영향
>Micro Kernel – 커널모드x -> 유저모드에서 처리
'👨💻Computer Science > 운영체제[OS]' 카테고리의 다른 글
[운영체제] 6장 Synchronization (0) | 2021.06.29 |
---|---|
[운영체제] 5장 Process Scheduling (0) | 2021.06.29 |
[운영체제] 4장 Multithreaded Programming (0) | 2021.06.29 |
[운영체제] 3장 Process Concept (0) | 2021.06.29 |
[운영체제] 2장 system (0) | 2021.06.29 |
댓글