[CS] 컴퓨터 구조와 운영체제 책을 마무리하면서(CPU 초기화 / 리눅스 스케줄링 / 뮤텍스 vs 트랜잭션)
·
Computer Science
'동작 원리를 그림으로 설명한 컴퓨터 구조와 운영체제(C.I.K 저)' 책 읽기를 마무리했다.사실 운영체제 책을 처음 읽기 시작했을 땐, 개발자로서 이런거까지 알아야하는건가 하는 생각이 있었다.하지만 책을 끝까지 읽고 난 뒤에는 내가 지금까지 작성하던 백엔드 코드의 근본적인 원리를 조금이나마 이해할 수 있는 밑바탕이 되었다고 생각이 바뀌었다. 오늘은 이 책의 끝부분인 11장(운영체제)부터 12장(프로세스의 구조)을 읽으면서 생긴 궁금증과 그에 대한 답에 대해서 한번에 작성해보려고 한다. 1. CPU 부팅 시 초기화컴퓨터의 전원이 켜지면 CPU는 자기가 할 일을 어떻게 알까?책의 부팅 단계파트를 보면 이런 문장이 나온다.전원이 켜지면 CPU는 초기화를 거치고, 프로그램 카운터(PC) 레지스터에 바이오스(R..
[CS] 키보드는 DMA 제어기를 왜 안쓰지?
·
Computer Science
책의 '직접 메모리 접근'에 대한 내용을 읽으며 DMA를 통한 직접 메모리 접근에 대한 내용을 읽고 있었다.책에는 "DMA 제어기(DMA Controller)는 주변 장치의 직접 메모리 접근을 실현해주는 장치로 다수의 주변 장치에서 발생하는 직접 메모리 접근 요청을 순차적으로 진행시킵니다" 라고 적혀있었다. 여기에서 말하는 주변 장치가 뭘까? 보통 생각할 수 있는 마우스나 키보드 같은 걸 말하는 걸까? 우리가 사용하는 키보드, 마우스는 DMA 제어기를 사용하지 않는다.도대체 어떤 장치는 DMA를 쓰고 어떤 장치는 안쓰는 걸까? 그리고 DMA는 왜 필요한걸까? 1. 만약 CPU가 모든 걸 다 해야 한다면? (PIO 방식)과거의 방식이자 가장 원초적인 데이터 전송 방식인 PIO(Programmed I/O)를..
CPU 사칙연산 원리 - 어차피 버려질 'Carry 0'을 컴퓨터는 굳이 왜 계산할까?
·
Computer Science
버려질 Carry 0, 왜 굳이 만드는 걸까?위의 그림처럼 4비트 컴퓨터에서 `A = 3(0011)`과 `B = 1(0001)`을 더하는 상황을 가정해보자. 결과는 `Y = 4(0100)`라는 값이 나올 것이다. 그런데 컴퓨터는 굳이 5번째 자리까지 계산해서 "0"이라는 캐리(Carry, 올림수)를 발생시킨다.어차피 4비트 범위를 넘어간 캐리(Carry)는 버려지거나 쓰여지지 않을텐데, 왜 굳이 계산해서 내보내는 걸까? 나는 이 버려지는 5번째 0의 값을 보고, 이런 생각이 들었었다."그냥 4비트 범위가 정해져 있으니 먼저 범위를 지정해서 만들지 않으면 되는 것 아닐까?""5번째의 캐리 0이 만들어지는 것은 리소스 낭비가 아닐까?" 이런 궁금증을 해결하기 위해 알아보니, 이 '불필요해 보이는 0'을 만..