interrupt 4

[운영체제] 인터럽트 처리

오늘은 운영체제가 인터럽트를 처리하기 위한 방법을 알아보도록 하겠습니다. 인터럽트를 처리하기 전에 우리는 잠깐 mode change의 내용을 떠올려봅시다. 2023.09.23 - [Computer Science/운영체제] - [운영체제] 3-3. 프로세스 스위치 mode change를 통해서 user mode에서 kernel 모드로 진입하게 되는데, 이러한 kernel mode entry pointsms 총 3가지가 있습니다. Interrupt, Trap, System call. 우리는 Interrupt를 처리하는 과정을 다루면서 동시에 Trap와 System call을 어떻게 처리하는지 알아봅시다. Interrupt 우선 간략하게 Interrupt에 대해서 다시 알아봅시다. Interrupt는 비동기 ..

CS/OS 2023.11.11

[컴퓨터구조] 6-4. Assembly Programs - 2

오늘은 어셈블리 언어로 다룬 프로그램 중, Subroutines와 I/O Programming에 대해서 살펴봅시다. Subroutines 우리는 계속 반복되는 작업들을 subroutine으로 둬서, 사용하기 편하게 합니다. 아래는 left shift를 4번하는 연산 즉, AC의 값에 16을 곱하는 연산이 되겠습니다. 이러한 식으로 subroutines를 돌고 나올 수 있습니다. X는 16진수로 1234이기 때문에 CIL을 4번 해주면 4비트 즉, 1바이트가 옮겨지므로 2340이 되고 같은 원리로 Y도 3210이 됨을 알 수 있습니다. I/O Programming 과거 컴퓨터는 I/O의 기능을 수행하기 위해 매번 CPU가 디바이스 장치에 대해서 확인을 하는 방식을 이용했습니다. 하지만, 이 방식은 너무 비..

[운영체제] 5-2. Race Condition

오늘은 앞전 글에서 다룬 개념 중, Race Condition에 대해서 정리해보겠습니다. Race Condition 어떤 공유 자원이 있다고 할 때, 해당 자원을 접근하는 두 개의 프로세스가 실행되는 순서에따라 공유 자원이 다른 상태를 가질 수도 있는 경우. 즉, 각 프로세스의 실행이 독립적이 아닌 종속적인 상황을 의미합니다. 아래에는 그러한 상황을 예시로 보여줍니다. 여러 Producer 프로세스가 존재하여, 공유된 자원(Buffer)에 접근하여 데이터를 집어 넣습니다. 그러면 여러 Consumer 프로세스가 그 데이터를 빼서 쓰는 형태의 예시를 들어보겠습니다. +) 여기서 공유된 자원은 Producer와 Consumer가 프로세스인지 쓰레드인지에 따라 나뉩니다. 프로세스라면 Shared memory겠..

CS/OS 2023.10.03

[컴퓨터구조] 5-5.3. Instruction Cycle(register-reference, I/O Instruction)

5-5.2에서는 Instruction Cycle 중 Memory-reference 에 대해서 알아보았습니다. 그래서 오늘은 Register-reference와 I/O instruction에 대해서 다뤄보겠습니다. Register-reference Instruction register-reference instruction은 총 12가지의 연산으로 이루어져있었습니다. 설명에도 나와있지만 통상 우리는 D7I'T3를 r로 치환하여 사용합니다. (T3 자체가 결국 세부 연산으로 나눠지는 Timing이기 때문이죠, D7, I도 마찬가지로 세부 연산을 나눌 수 있는 기준입니다.) B0 - B11은 각 비트의 자리수가 1인지 아닌지를 판단하는 것입니다. 만약 B11이라면 11번째 비트가 1인지 아닌지를 보는 것이죠...