Operating System


운영체제란?

운영체제는 응용 프로그램이나 사용자에게 편리한 인터페이스 환경을 제공하고 
그 결과를 돌려준다. 그리고 컴퓨터 시스템의 자원을 효율적으로 관리하는 SW이다. 

[인터페이스?]
- 사용자가 컴퓨터를 사용할수 있게 해주고, 그 결과를 알려주는 것 
- 자동차의 계기판 같은 느낌

[특징]
1. 컴퓨터의 성능을 향상할 뿐 아니라 자원을 효율적으로 관리
2. 사용자가 직접 자원(하드디스크)에 접근하는 것을 막음으로써 자원보호
3. 사용자에게 편리한 인터페이스 환경과 서비스를 제공


[컴퓨터 하드웨어]

1. 프로세서 (processor)

- CPU(중앙처리장치)
- GPU
- 응용 전용 처리장치


2. 메모리 (Memory)

- 주 기억장치 (RAM)
- 보조 기억장치 (HDD,SDD)

3. 주변장치


- 입력장치 (키보드 / 마우스)
- 출력장치 (모니터 / 프린터)
- 저장 장치
- 네트워크 모뎀


[ 1. Processor ]

[특징]
- 중앙처리장치 (CPU)
- 연산을 수행한다.
- 컴퓨터의 모든 장치의 동작을 제어한다.


[구성]
1. 산술논리 연산장치(Arithmetic and Logic Unit)
→ 데이터의 덧셈,뺄샘,나눗셈, 같은 산술연산과 AND,OR과 같은 논리연산도 한다.

2. 제어장치(Control Unit)
→ 명령어를 해석하여 제어 신호를 보내고 CPU내의 데이터 흐름을 조절한다.
→ ex) 메모리 더해, 곱해, 가져와 등등


[Register]

CPU내부에 있는 데이터 임시보관소
- processor가 사용할 데이터 저장
- 컴퓨터에서 가장 빠른 메모리
- 다양한 Register를 통해서 연산이 이루어진다.

[Register_구분]
1. 용도에 따른 분류 ( 전용 / 범용 )
2. 변경 여부 (가시 레지스터 / 불가시 레지스터)
3. 저장하는 정보에 따른 분류(데이터, 주소, 상태)


[Register_종류]
A. 가시 레지스터

1. 데이터(DR)  : 함수 연산에 필요한 데이터를 저장한다.

2. 주소(AD) : 주소나 유효 주소를 계산하는 데 필요한 주소의 일부분을 저장한다.

→ 기준 주소 레지스터 : 프로그램을 실행할 때 사용하는 기준 주소 값을 저장.
→ 인덱스 레지스터 : `**유효주소**`를 계산하는 데 사용하는 주소 정보를 저장.
→ 스택 포인터 레지스터 : 반환 주소, 프로세서 상태 정보, 서브루틴의 임시변수를 저장.

B. 비가시 레지스터

1. 프로그램 카운터(PC) =instruction Pointer

→ 다음에 실행 할 명령어의 주소를 보관하는 레지스터

2. 명령어 레지스터(Instruction R)

→ 현재 실행하는 명령어를 보관하는 레지스터
→ 제어장치는 IR에 있는 명령어를 해석한 후 제어 신호 발송.

3. MAR(Memoru Address R)

→ 메모리에서 데이터를 가져오거나 반대로 메모리로 데이터를 보낼 때 주소를 지정하기 위해 사용

4. MBR (Memory Buffer Register)

→ 프로세서가 메모리에서 가져온 데이터나 옮겨갈 데이터를 임시로 저장한다.
→ 항상 MAR과 함께 동작한다.


[프로그램_상태_레지스터(Program_Status_Register)]

→ 산술논리 연산 레지스터와 연결되어 있으며 연산결과가 양수인지 음수인지 0이 아닌지 등을 저장.

1. 플래그 레지스터
2. 상태 레지스터 
3. 컨디션 레지스터


[2. Memory]

[특징]

- 기억장치 (데이터를 저장하는 장치)

- 위로 갈수록 속도는 빨라지고 가격은 비싸짐. 용량은 적어짐

- 아래로 갈수록 속도는 느려지지만, 용량은 커지고 가격은 저렴해짐


[메모리_종류]

1. 레지스터
2. 캐시(SRAM : 정적 RAM)
3. 메인 메모리(DRAM : 동적 RAM)
4. 보조기억장치 (processor가 직접 접근할 수 없다.)


[주기억장치]

- RAM
- processor가 수행할 프로그램과 데이터 저장
- 디스크 입출력 병목현상(I/O bottleneck) 해소
→ CPU속도와 디스크 속도의 큰 gap을 줄여주기 위해서.


[보조_기억장치]

- 프로그램과 데이터를 저장

- processor가 직접 접근 불가
→ 주변장치로 분류
→ 주기억장치를 거쳐서 접근
→ 가상메모리 : 하드디스크 일부를 main memory 처럼 사용


[메모리_보호]
메모리를 보호하기 위해 CPU는 현재 진행 중인 작업의 메모리 시작 주소를 경계(bound) 레지스터에 

저장한 후 작업을 한다. 또한 현재 진행 중인 작업이 차지하고 있는 메모리의 크기, 

즉 마지막 주소까지의 차이를 한계(limit) 레지스터에 저장한다. 그리고 사용자의 작업이 진행되는 

동안 이 두 레지스터의 주소 범위를 벗어나는 지 하드웨어적으로 점검함으로써 매모리를 보호한다.


[부팅]
→ 컴퓨터를 켰을 때 운영체제를 메모리에 올리는 과정


[System Bus]

Untitled

[특징]

- 전면 버스(FSB) → 메모리의 작동 속도
- 하드웨어들이 데이터 및 신호를 주고 받는 물리적인 통로
- CPU와 메모리를 연결하는 Sub_system


[폰노이만_구조]
- CPU,메모리, 입출력장치, 저장장치가 버스로 연결되어 있는 구조
- 하드웨어는 그대로 둔 채 작업을 위한 프로그램만 교체하여 메모리에 올리는 방식
- 모든 프로그램은 메모리에 올라와야 실행될 수 있다.


[Controll_Bus]

제어버스에서는 다음에 어떤 작업을 할지 지시하는 `제어 신호`가 오고 간다.

제어 신호로 연산장치의 연산 종류와 메인 메모리의 읽기나 쓰기 동작을 결정.

▶ 흐름
제어버스 ↔ [제어장치 / 메모리 / 주변장치]


[Address_Bus]

주소 버스에서는 메모리의 데이터를 읽거나 쓸 때 어느 위치에서 작업할 것인지

알려주는 `위치 주소`가 오고 간다

Address Bus를 구성하는 배선 수는 프로세서와 접속할 수 있는 메인 메모리의 

최대 용량을 결정한다. CPU와 Memory는 단방향으로 데이터 전달이 가능한 버스를 

이용함으로써 주소 전달은 CPU에서 메모리로만 가능

▶ 흐름
메모리 주소 레지스터 → 주소 버스 

주소 버스 → 메모리 


[Data_Bus]

프로세서와 메인 메모리, 주변장치 사이에서 '데이터'를 전송한다.

데이터 버스를 구성하는 배선 수는 프로세서가 한 번에 전송할 수 있는 

비트 수를 결정하는데 이를 '워드'라고 한다.

▶ 흐름
메모리 버퍼 레지스터 ↔ 데이터 버스


[대역폭(BandWidth)]

→ 한 번에 전달할 수 있는 데이터의 최대 크기

→ Word : CPU가 한 번에 처리할 수 있는 데이터의 최대 크기

→ 레지스터의 크기 = 버스의 대역폭 = 메모리에 한번엔 저장할 수 있는 데이터 크기


[3. 주변 장치 ]

  • 프로세서와 메모리를 제외한 하드웨어들
    • 입력장치 (키보드 , 마우스)
    • 출력장치 (모니터, 프린터, 스피커)
    • 저장장치 (USB, CD)


References