운영체제 개요
Operating System (운영체제)
컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어
1. OS는 사용자 및 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층이다
2. 소프트웨어가 시스템 내에서 실행되기 위해 메모리에 프로그램이 있어야한다,
-> OS 자체도 하나의 소프트웨어로서 전원이 켜짐과 동시에 메모리로 올라간다
Kernel (커널)
메모리에 상주하는 운영체제의 부분으로, 운영체제 코드중에서도 핵심적인 부분을 뜻함
운영체제의 기능
1. 하드웨어를 위한 기능
사용자가 직접 다루기 힘든 하드웨어 관리 (시스템 내 자원을 효율적으로 관리)
2. 사용자를 위한 역할
편리한 인터페이스를 제공하는 역할 (시스템을 편리하게 사용할수 있는 환경을 제공)
운영체제의 Basic Element
CPU (Processor)
하드웨어 적인 측면의 "컴퓨터 내에서 프로그램을 수행하는 하드웨어 유닛"
1. 중앙처리장치(CPU)를 뜻하며, 폰노이만 아키텍쳐에 의해 만들어졌다면 적어도 하나 이상의 ALU(Arithmetic Logic Unit)와 처리 레지스터(Register)를 내장하고 있어야 함
2. CPU는 메인메모리와 프로세서 자체에 내장된 레지스터에만 직접 접근가능함.
cf) Process
메모리에 적재되어 프로세서에 의해 실행중인 프로그램
cf) Program
Instruction과 Data의 집합
(프로세서와 프로세스, 프로그램을 혼용해서 사용하지 않도록 주의해아함)
컴퓨터가 프로그램을 실행하는 과정
- 사용자가 단축 아이콘 혹은 명령행에서 프로그램을 실행한다.
- 파일로 저장되어있던 프로그램은 RAM에 Loader에 의해 적재(Load)되고 처음으로 실행해야 할 기계어 코드가 저장된 메모리의 주소를 CPU의 명령주소(IP: Instruction Pointer) 레지스터에 저장한다.
- 프로세서(CPU)는 IP레지스터가 가리키는 메모리의 주소에서 처음으로 실행할 명령어를 인출(메모리->CPU)하여 명령 레지스터(Instruction Register)에 저장한다.
- IR에 저장된 명령을 실행하고 IP에 다음번에 실행할 명령어가 있는 주소를 저장한다.
- 3-4를 프로그램 끝까지 반복한다.
Main Memory(RAM)
프로그램이 실행되기 위해서 프로그램이 저장되어야 하는 공간 (주기억장치)
- 주기억장치(Random Access Memory)
- 휘발성(volatile) : 컴퓨터의 CPU가 현재 처리중인 데이터나 명령어만을 일시적으로 저장하는 휘발성 메모리
-> 전원이 꺼지면 메인 메모리에 저장되어있던 모든 내용이 사라짐
-> 전원이 꺼지더라도 데이터를 유지하고 싶다면 하드디스크에 저장해야함 - 프로그램은 실행되기전까지 디스크에 저장되어있는 이진 실행파일에 불과하다
-> 실행을 위해 메인메모리로 올라가는 순간 프로세스가 된다
Register(레지스터)
CPU(Central Processing Unit)가 요청을 처리하는 데 필요한 데이터를 일시적으로 저장하는 기억장치
- 레지스터는 공간이 작지만, CPU와 직접 연결되어 있어 연산속도가 메모리보다 실제 수십배에서 수백배까지 빠르다.
- 실제로 컴퓨터에서 데이터를 영구적으로 저장하기 위해서는 하드디스크를 이용해야하고 임시적으로 저장하는 장소를 RAM이라고 한다.
- 레지스터의 크기 : 32bit or 64bit ( system bus의 크기) -> 크기가 클 수록 한번에 데이터가 많이 움직여서 속도가 빨라진다.
메모리로 연산의 결과를 보내고 영구적으로 저장할 데이터를 하드디스크에 저장해야하는 등 명령을 처리하기 위해서는 이들에 대한 주소와 명령의 종류를 저장할수 있는 기억공간이 하나 더 필요하다.
그리고 이 공간은 무리없이 명령을 수행하기 위해 메모리보다 빨라야한다. 이 역할을 하는 것이 CPU옆에 붙어있는 레지스터이다. CPU는 자체적으로 데이터를 저장할 방법이 없기 때문에 메모리로 직접 데이터를 전송할 수 없다.
따라서 연산을 위해서는 반드시 레지스터를 거쳐야 하며 이를 위해서 레지스터는 특정주소를 가리키거나 값을 읽어올수 있다.
I/O Modules
secondary memory devices(하드디스크), communications equipment(네트워크와 관련된 여러가지 장치들), terminals(컴퓨터 시스템과 상호작용하기 위해 필요한 장치)
Secondary Memory Devices (하드 디스크)
모든 프로그램들, 데이터들, 실행파일들은 하드디스크에 저장, 이제 실행을 할 때 Main memory에 올라가고 메모리에 있는 냉용을 CPU가 한문장씩 읽어서 실행, 내용이 바뀐 데이터가 있으면 메모리에 저장, 이 메모리에 저장된 내용이 다시 하드디스크에 저장
-> 하드디스크(secondary memory devices)는 시스템 내부가 아니다. I/O 모듈로 연결되어 있는 시스템 외부장치로 인식하는 것이 맞음
communications equipment
네트워크와 관련된 여러가지 장치들
terminals
사용자가 컴퓨터 시스템과 상호작용하기 위해 필요한 장치: 키보드 마우스 프린트 스크린 등을 말함
System Bus
중요한 3가지 장치들이 Processor와 Main memory와 I/O 모듈들이 시스템 버스로 연결
Computer Component: Top-Level View
cf) CPU 전용 레지스터
AC (Accumulator, 누산기)
데이터를 일시 저장하는 레지스터
PC (Program Counter)
다음에 실행할 명령의 주소를 저장하는 레지스터
IR (Instruction Register)
현재 실행중인 명령어를 기억하는 레지스터
MAR (Memory Adress Register, 기억장치주소 레지스터)
다음에 수행될 명령어를 인출하기 위해 현재 Program Counter에 들어 있는 주소,
시스템 버스로 출력 되기전에 일시적으로 저장되는 주소 레지스터
- PC->MAR
- instruction
프로그램 카운터에서 가져오는 거 X,
PC → MAR 옮겨서 가져오는 거 O
MBR (Memory Buffer Register, 기억장치버퍼 레지스터)
레지스터와 외부에 연결되는 장치사이에서 전송되는 데이터의 전송통로
기억장치로 쓰일 데이터나 기억장치에서 읽어온 데이터를 임시로 저장하는 레지스터
CPU 안에 있는 모든 레지스터가 메모리에 연결되는게 아니라,
CPU 안으로 들어오는 모든 명령어들과 데이터들은 MBR을 거친다.
MAR의 실제 콘텐츠(데이터, 명령어)가 들어있다.
I/O AR (Input/Output Address Register)
CPU와 I/O 모듈 사이에 이동할때 기능, 입출력에 사용됨
I/O BR (Input/Output Address Buffer Register)
CPU와 I/O 모듈 사이에 이동할때 기능, 입출력에 사용됨
Instructions
Program
일반적으로 하드디스크 등에 저장되어 있는 실행코드
Instruction과 Data의 집합
Instruction의 종류
- Processor-memory data transfer
메모리 몇번지에 있는 데이터를 cpu로 옮겨라 - Processor-I/O data transfer
cpu ↔ IO - Data processing
+, -, and, or - Control
jump 명령어
Instruction Execution
Two Steps
- Processor가 메모리로부터 명령어를 읽어옴
- Processor가 각각의 명령어를 실행
★Basic Instruction Cycle
Fetch Stage: 메모리에서 instruction 가져오기
Execute Stage: 명령어를 분석 후 실행
시작 → 다음 명령어 가져오기 → 명령어 실행 → 정지(오류 X)
Example of Program Execution
★Control and Status Registers
Program Counter(PC)
다음에 실행할 명령의 주소를 저장하는 레지스터
Instruction Register(IR)
현재 실행중인 명령어를 기억하는 레지스터
Program Status Word (PSW)
CPU의 현재 상태 정보 저장
시스템 내부의 순간의 상태를 기록하고 있는 정보
- Condition Codes : 상태코드, 점프 여부를 결정하는데 사용하는 코드2개의 비트를 활용하여 양수, 음수, 0, 오버플로우를 나타내는 코드
- Interrupt Enable/Disable : 인터럽트 활성화 여부1개의 비트를 활용하여 interrupt가 발생했는지 나타내는 코드
- Supervisor/User Mode : 감독-사용자 모드시스템은 한번에 하나의 프로그램을 실행시키는 것이 아니라 여러 프로그램이 동시에 실행한다. 하지만 CPU는 하나 뿐이라 한번에 하나의 프로그램만 실행이 가능함예) A,B 프로그램이 빠르게 번갈아가면서 실행 : A -> OS -> B -> OS -> A ...A,B는 유저 프로그램으로 실행 권한이 굉장히 작은 반면 OS프로그램은 시스템을 관리하는 굉장히 특별한 프로그램으로 굉장히 많은 권한을 갖고 실행가능따라서 CPU는 실행 가능한 권한을 알고있어야 하지만 그렇게 많은 정보를 저장할수 있는 능력이 없다 -> 그렇기 때문에 PSW 내 Supervisor/User를 나타 낼 수 있는 비트를 1개 설정Supervisor 모드 : OS가 실행중 -> OS가 하는 일 모두 볼수 있음 / User 모드 : User 프로그램이 세팅 -> 권한 제한적
- 시스템을 관리하는데 필요한 여러가지 상황을 이 레지스터에 저장해둔것이다.
에러를 최소화하고 시스템 전체에 영향을 미치지 않게 하기 위해 저장 - 비트마다 목적을 다르게 해서 여러가지 정보를 저장
- CPU의 연산 결과에 따라 상태가 PSW에 저장되며,
이 중에 인터럽트를 알리는 비트 5bit가 있고,
5가지 ISR(인터럽트 서비스 루틴)이 운영체제 일부에 존재 - 인터럽트 처리 중 다른 인터럽트 발생 시, 우선순위에 의해 인터럽트 처리
'Computer Science > 운영체제' 카테고리의 다른 글
Chapter 3-1. Process Description and Control (0) | 2023.03.31 |
---|---|
Chapter 2-2. Operating System Overview (0) | 2023.03.26 |
Chapter 2-1. Operating System Overview (0) | 2023.03.26 |
Chapter 1-3. (Computer System Overview) (0) | 2023.03.25 |
Chapter 1-2. (Computer System Overview) (0) | 2023.03.25 |