본문 바로가기
  • 시 쓰는 개발자
CS 개념/운영체제

운영체제 수업 (5) 03/19

by poetDeveloper 2024. 3. 25.

학교 수업을 정리한 내용입니다. 참고만 해주세요.

 

0319 화요일

CPU Instruction Cycle  :  Fetch - Decode - Execute - Store

CPU는 Instruction Cycle만 반복적으로 수행한다. 다른 일은 안한다. 전기가 꺼지면 아무 일도 못한다.

 

1. Fetch - 명령어를 가져온다.

메모리에서 IR로 instruction을 가져온다. 정확히는 다음과 같은 과정을 거친다.

AR ← PC

PC++

IR  ← M[AR]

 

2. Decode - 명령어를 해석한다.

IR안에있는 명령어의 opcode를 해석해 연산의 종류, 데이터의 위치 등을 파악한다.

 

( Data Fetch if MRI instruction )

 

3. Execute - 명령어를 실행한다.

 

4. Store

 

Instruction Fetch - 메모리에서 IR로 instruction을 가져온다.

< T0 : AR ← PC >

1. S2 S1 S0값을 010으로 만들어서(PC는 2번) PC값을 버스에 올린다.

2. AR의 LD값을 1로 만들어서 버스로 올린 PC값을 받는다.

Instruction Fetch의 첫번째 T0 과정

3.  위 그림에 대한 대답.

Q1 대답 : 프로그램은 원래 HDD에 있고, 그게 메모리에 올라와서 주소값을 알려주게 됨.

Q2 대답 : 프로그램을 메모리에 올려주는 건 OS의 역할

 

 

< T1  : IR ← M[AR] , PC ← PC+1 >

1. Memory의 읽기 신호를 켜준다.

2. 그리고 S2 S1 S0값을 111로 만들어서(메모리는 7번) 메모리값을 버스에 올린다.

3. IR의 LD값을 1로 만들어서 버스의 값을 받아준다.

4. PC의 INC를 켜서 increment 해준다.

Instruction Fetch의 두번째 T1 과정

참고)

4x16 디코더 - 해당하는 값만 1이고 나머지는 0

  • input : 4bit
  • 만약 0001이면 T1만 1이고, 나머지 T0, T2, T3, ... T15는 0이다.
  • 만약 0000이면 첫번째 T0만 1로 만들고, 나머지는 0이다.

"Starting" Program Execution

1. 예를 들어, 유저가 한글파일 더블 클릭

2. OS가 HDD에서 한글파일을 찾음. 예를들어 이때 한글파일 시작주소가 1024

3. OS가 HDD에서 가지고와서 메인 메모리에 로드해줌.

4. OS가 PC값에 한글파일의 시작주소인 1024를 세팅함.

5. CPU가 일을 이어받아서, Instruction Cycle을 돌린다.

 

만약 여기서 유저가 다른 프로그램을 실행하려 한다면 ??

→ 인터럽트 걸고, 해당 파일을 HDD에서 찾아 로드하고, PC값 세팅하고 ... (반복함)


인터럽트 부분은 추가한 것.

 

Interrupt

▶ CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 예외 상황에 처리가 필요할 경우, microProcessor에게 알려서 처리하도록 하는 것.

  • 하드웨어 인터럽트 : 하드웨어가 발생시키는 인터럽트. CPU가 아닌 하드웨어 장치가(I/O Device 등) CPU 서비스를 요청해야 할 경우에 발생함.
  • 소프트웨어 인터럽트 : 소프트웨어가 발생시키는 인터럽트로, System Call 등이 있다.

 

Interrupt 루틴 (참고)

  1. 프로세스 A를 하던 중, System Call에 의해 인터럽트가 발생했음.
  2. CPU는 현재 진행중인 기계어 코드 완료.
  3. 원래 수행중이던 상태를 해당 Process의 PCB에 저장한다.
  4. PC에 다음 실행할 명령어 주소값 저장
  5. 인터럽트 백터를 읽고 ISR 주소값 얻어 ISR로 점프해 루틴 실행
  6. 코드를 실행하고, 일을 다 처리하면 프로세스의 상태를 복구
  7. ISR의 끝에 IRET 명령어에 의해 인터럽트가 해제됨.
  8. IRET 명령어가 실행되면 인터럽트때문에 저장해둔 PC값을 복원해 실행 위치로 돌아간다. (Return)

요약

1. PC는 OS에 의해 로드된다.

어떤 프로그램을 실행할 때 다음과 같은 일이 일어난다.

  • OS가, HDD에서 프로그램을 찾는다.
  • OS가, 찾은 프로그램을 메인 메모리의 빈 공간에 넣어준다. 이때 OS가 가져온 프로그램은 OS가 주소를 알고있다.
  • OS가, 프로그램의 첫번째 주소를 PC값에 로드한다.

이후로는 CPU가 일한다.

 

2. CPU가 PC값을 AR로 넣어준다. (AR ← PC)

 

3. CPU가 M[AR]값을 IR로 넣어준다.  (IR ← M[AR])

그리고 CPU가 PC++를 수행한다.  (PC ← PC+1)

 

4. CPU가 디코더를 활용하여 IR에 있는 명령어를 해석한다.

그리고 CPU가 데이터의 주소를 AR로 옮긴다.  (AR ← IR(0-11))

 

5. CPU가 데이터를 메인 메모리에서 DR로 옮긴다.  (DR ← M[AR])

 

6. CPU가 adder와 AC를 사용해서 ADD 연산을 수행한다.  (AC ← AC+DR)

'CS 개념 > 운영체제' 카테고리의 다른 글

운영체제 수업 (7) 03/26  (0) 2024.03.28
운영체제 수업 (6) 03/21  (0) 2024.03.28
운영체제 수업 (4) 03/14  (0) 2024.03.22
운영체제 수업 (3) 03/12  (0) 2024.03.19
운영체제 수업 (2) 03/07  (1) 2024.03.17