CS 116

[컴퓨터구조] 4-3. Arithmetic μoperations

4-1장에서 잠깐 다룬 μoperation에 대해서 조금 더 자세하게 설명한다. μoperation란? 이 책(Computer System Architecture | M. Morris Mano)에서는 μoperation을 4가지로 구분한다. 4-1장에서 다룬 register transfer 그리고 Arithmetic μoperation, Logic μoperation, Shift μoperation. 이번 글에서는 Arithmetic μoperation에 대해서 다룬다. 위에 보이는 것처럼 구분한다. (단, R1 - R2와 R1 + R2' + 1은 같은 의미이다.) Binary Adder 이러한 Arithmetic μoperation을 구현하기 위해서 Binary Adder가 존재한다. 이 가산기는 n-..

[컴퓨터구조] 4-2. Bus and Memory Transfer

오늘은 버스에 대한 개념과, 버스를 설계하는 대표적인 두 가지 방법에 대해 설명합니다. Bus 우리가 아는 버스와 비슷한 개념입니다. 우리가 버스를 타고 A에서 B로 이동하는 것처럼, 여기서 사용되는 Bus는 컴퓨터 내부에 있는 component들 사이에서 데이터를 전송하는 의사소통 시스템입니다. 실생활에서 버스의 노선을 굉장히 잘 잡는 것이 중요합니다. 이와 같이 이번에 배울 버스도 설계를 잘하는 것이 중요합니다. 그래야 데이터 사이의 충돌이 발생하지 않기 때문입니다. 따라서 우리는 Bus Master(bus에 의해서 전송되는 데이터)가 하나만 되도록 설계하는 것이 중요합니다. Common Bus System 가장 기본적인 버스를 설계하는 2가지 방법에 대해서 알아봅시다. 1. Bus System wi..

[컴퓨터구조] 4-1. Register Transfer

디지털 컴퓨터 시스템은 register, decoder, arithmetic element, control logic 등과 같은 component들로 이루어진 여러 종류의 디지털 모듈들로 구성됩니다. 디지털 모듈이란 register들과 그 register 속 저장된 데이터에 대한 operation들입니다. 우리는 이러한 operation을 통해서 레지스터에 저장된 값을 shiftm count, clear, load와 같은 작업을 통해 갱신합니다. 이러한 operation을 μoperation이라고 합니다. 레지스터 레지스터는 데이터를 저장하는 역할을 합니다. 여기서는 컴퓨터에서 사용되는 기본 레지스터에 대해서 설명합니다. 1. MAR(Memoty Address Register) : 데이터의 주소를 기억하..

[컴퓨터구조] 3-3. Error Detection Codes

비트의 데이터를 전송할 때, 컴퓨터에서 비트 전송의 에러를 확인해볼 필요가 있다. 항상 비트가 잘 갔는지는 확실하지 않기 때문이다!(그렇다고 하자.) 그렇다면 우리는 어떠한 방식으로 비트의 전송이 정확히 이루어졌는지 판단할 수 있을까?? 여기서는 Parity bit를 사용한다. 컴퓨터는 이진수로 이루어져있기 때문에, 데이터 또한 이진수로 주고 받는다. 이 때, Parity bit는 전송되는 1의 개수가 홀수 혹은 짝수가 되도록 만들어주는 비트이다. 만약 우리가 1의 개수를 짝수로 만들고 싶다면 even parity bit를 홀수 개로 만들어주고 싶다면 odd parity bit가 되겠다. 만약, 우리가 odd Parity bit로 설정했고, 1101 이라는 데이터를 전송한다고 한다면 1의 개수가 3개 즉..

[컴퓨터구조] 3-2. Floating-Point Representation

Floating-Point Representation, 부동 소수좀 표현에 대해서 알아보자. 교수님이 중요하게 다루지는 않았지만, 수업을 진행했던 내용이므로 정리해본다. 부동 소수점 표현 만약 우리가 엄청 작은 수의 단위나 엄청 큰 수는 어떻게 표시할까?? 만약 20억 혹은 그것보다 더 큰 수를 계산하기 위해서 그에 맞는 2진수의 자리수만큼 비트를 사용하기에는 너무 자원이 낭비된다. 따라서 컴퓨터는 이러한 수들을 보다 효율적으로 저장하기 위해 고안되었다. 부동 소수점을 표시하기 위해서는 총 3개의 부분이 존재한다. sign, mantisa, exponent. 우리는 이 세가지를 예로 들어 설명하겠다. 편의를 위해 작은 수로 진행하는 점 양해 부탁한다. 우리가 -24.25라는 수를 부동 소수점 표현 방식으..

[컴퓨터구조] 3-1. Complements

1, 2장은 교수님께서 논리회로 때 설명한거라고 하고 넘어가주셨다. 난 안들었는데.. 강의자료라도 첨부해주시지 첨부도 안해주셨다. 그러고 우리보고 알아서 1, 2장을 공부하란다 ㅠㅠ 그래서 3장부터 시작합니다!! 컴퓨터는 2진수를 사용한다. 또한 컴퓨터에는 add 즉, 더하기 기능만 존재한다. 그런데 어떻게 컴퓨터는 사칙연산을 모두 진행할 수 있을까?? 우리는 보수의 개념에 대해서 배우고, 컴퓨터 내에서 뺄셈은 어떻게 진행되는 지 알아본다. 또한 이러한 연산에서 발생하는 overflow Error에 대해서 다룬다. Complements 앞서 말했듯이 컴퓨터는 0과 1로 이루어진 세계이다. 우리는 기본적으로, 10진법 수를 2진수로 나타낼 수 있다. 만약 우리에게 10+2의 이진수 결과를 나타내라고 한다면..

[운영체제] 2-4. PCB

오늘은 PCB(Process Control Block)에 대해서 정리해보겠습니다. Control Data Structures 운영체제에서 프로세스를 조작하기 위해 사용하는 데이터 구조입니다. 각 프로세스와 리소스의 현재 상태의 정보를 나타내고 있습니다. 우리는 그러한 자료구조는 PBC라고 부르기로 하였습니다. PCB(Process Control Block) PCB는 우측 그림과 같이 프로세스의 속성 정보들을 포함하고 있습니다. 식별자(Identifier) : 0부터 1씩 증가하며 정수값을 갖습니다. 식별자의 프로세스, 부모 프로세스의 식별자(만약 존재한다면!), 프로세스를 실행시키고 있는 사용자의 식별자, 프로세스 그룹의 식별자까지 저장합니다. -> 운영체제는 프로세스가 생성되면, 프로세스 그룹을 지정합..

CS/OS 2023.09.12

[운영체제] 2-3. 프로세스 상태도

이번 글에서는 프로세스의 상태도 대표적인 5가지와, 추가적인 2가지까지 해서 총 7가지를 알아보겠습니다. 우선, 이전 글에서 첨부했던 사진을 다시 떠올려봅시다. 여기서 대표적으로 Not Running과 Running 상태를 나타냈었는데, 우선 먼저 Not Running의 세부 상태에 대해서 설명하겠습니다. Not Running Ready - 실행되기를 기다리는 상태입니다. 뒤에 설명한 대기 큐에서 실행을 기다립니다 Blocked(= wait, sleep) - 이벤트가 발생되기를 기다리는 상태입니다. 대표적으로 이 때, 사용자의 입력을 기다리는 상태를 Block이라고 할 수 있습니다. 대기큐(Ready Queue)라는 단어를 잠깐 꺼냈는데, dispatcher(이 개념은 전에 설명했습니다.)가 항상 대기 ..

CS/OS 2023.09.11

[운영체제] 2-2. 프로세스 정의

앞선 많은 글에서 프로세스라는 단어를 몇번 언급한 적 있다. 이 글에서는 프로세스의 정의에 대해서 작성한다. 프로세스 현재 실행되고 있는 프로그램을 의미한다. 실행되지 않는 프로그램은 단지 프로그램일뿐 프로세스가 아니다. 프로세스는 메모리 내에서 크게 세가지 구성 요소를 가진다. 1. 프로그램의 실행 instruction이 모여있는 code 2. instruction의 실행 대상인 data 3. 실행에 필요한 운영체제의 자원들의 집합인 context 프로세스 상태 프로세스의 상태는 다음 글에서 더 자세히 다루겠지만, 우리는 dispatcher의 개념을 설명하기 위해 여기서 간단히 설명한다. 프로세스는 많은 상태를 갖고 있는다. 다음 글에서 총 7가지의 상태에 대해서 설명할테지만 여기서는 ready와 ru..

CS/OS 2023.09.11

[운영체제] 2-1. 커널 구조

운영체제의 커널 구조에는 2가지가 있다. Monolithic kernel과 micro kernel. 오늘은 이 두 가지에 대해서 간략하게 설명한다. 앞서, 커널에 대해서 자세히 설명하지 않은 것으로 기억하는데 커널이란 운영 체제 내에서 중요한 역할을 수행하는 함수들의 집합체라고 생각하면 된다. 운영체제 시간에서는 커널과 OS가 같은 의미로 이해해도 무방하다고 말한다. Monolithic Kernel mono에서 알 수 있듯이 단일체 커널을 의미한다. 앞서 커널은 여러개의 함수들의 집합체라고 설명한 바 있다. 이러한 많은 함수들이 커널 내에서 존재하는 형태를 의미한다. 이는, 커널의 구조가 커지므로 무겁다는 단점이 있지만, 모두가 커널 내에 있으므로 서로간의 상호작용이 원할하여 속도가 빠르다는 장점이 있다..

CS/OS 2023.09.11