Chapter 01. 컴퓨터 구조 시작하기
컴퓨터의 4가지 핵심 부품
- 중앙처리장치 (CPU): 컴퓨터의 두뇌
- 산술논리연산장치 (ALU, Arthmetic Logic Unit): 계산기
- 레지스터: CPU 내부의 작은 임시 저장 장치
- 제어장치 (CU, Control Unit): 제어신호라는 전기신호를 내보내고 명령어를 해석하는 장치
- 주기억장치 (메모리): RAM, ROM
- 보조기억장치
- 입출력장치
시스템 버스
- 주소 버스
- 데이터 버스
- 제어 버스
Chapter 02. 데이터
02-2 0과 1로 문자를 표현하는 방법
문자 집합과 인코딩
- 문자 집합 (character set): 컴퓨터가 인식하고 표현할 수 있는 문자의 모음
- 문자 인코딩: 문자를 0과 1로 변환
- 문자 디코딩: 문자 코드를 사람이 이해할 수 있는 문자로 변환하는 과정
아스키 코드: 총 128개의 문자를 표현할 수 있음
한국을 포함한 영어권 외의 나라들은 자신들의 언어를 0과 1로 표현할 수 있는 고유한 문자 집합과 인코딩 방식이 필요하다고 생각했습니다.
EUC-KR
한글 인코딩
- 완성형 인코딩: 초성, 중성, 종성의 조합으로 이루어진 완성된 하나의 글자에 고유한 코드를 부여
- 조합형 인코딩
한글 한 글자에 2바이트 코드가 부여됨. 네 자리 십윤진수로 나타낼 수 있음
2350개 정도의 한글을 표현할 수 있지만, 모든 한글 조합을 표현할 수 있을 정도로 많은 양은 아닙니다.
이러한 문제를 조금이나 ㅏ해결하기 위해 등장한 것이 마이크로소프트의 CP949 (Code Page 949) 입니다.
CP949 는 EUC-KR 의 확장된 버전으로, EUC-KR 로는 표현할 수 없는 더욱 다양한 문자를 표현할 수 있습니다.
유니코드와 UTF-8
유니코드는 통일된 문자 집합입니다.
인코딩 방법에는 크게 UTF-8, UTF-16, UTF-32 등이 있습니다.
UTF 는 Unicode Transformation Format 의 약어로 유니코드를 ㄹ인코딩하는 방법입니다.
UTF-8 로 인코딩한 값의 결과는 1~4 바이트가 될 수 있습니다.
Chapter 03. 명령어
기계어 <> 어셈블리어 <> 고급언어
고급언어가 어떠헥 저급언어로 변환될까요?
여기에는 크게 두 가지, 컴파일 방식과 인터프리트 방식이 있습니다.
컴파일 언어
대표적인 컴파일 언어로는 C 가 있습니다.
컴파일 결과로 저급 언어인 목적 코드가 생성됩니다.
인터프리터 언어
인터프리터에 의해 소스 코드가 한 줄씩 실행되는 고급 언어입니다. 대표적인 인터프리터 언어로 Python 이 있습니다.
Java 의 경우 저급언어가 되는 과정에서 컴파일과 인터프리트를 동시에 수행합니다.
목적코드가 실행파일이 되기 위해서는 링킹이라는 작업을 거쳐야 합니다.
Chapter 04. CPU 의 작동 원리
Chapter 05. CPU 성능 향상 기법
Chapter 06. 메모리와 캐시 메모리
Chapter 07. 보조기억장치
Chapter 08. 입출력장치
Chapter 09. 운영체제 시작하기
09-2 운영체제의 큰 그림
이중 모드와 시스템 호출
이중 모드 (dual mode) 란 CPU 가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식입니다. CPU 는 명령어를 사용자 모드로써 실행할 수 있고, 커널 모드로써 실행할 수 있습니다.
사용자 모드 (user mode) 는 운영체제 서비스를 제공받을 수 없는 실행 모드입니다. 사용자 모드로 실행중인 CPU 는 입출력 명령어와 같이 하드웨어 자원에 접근하는 명령어를 실행할 수 없습니다.
반면 커널 모드 (kernel mode) 는 운영체제 서비스를 제공받을 수 있는 실행 모드 입니다. 즉, 커널 영역의 코드를 실행할 수 있는 모드입니다. CPU 가 커널 모드로 명령어를 실행하면 자원에 접근하는 명령어를 비롯한 모든 명령어를 실행할 수 있습니다.
CPU 가 사용자 모드로 실행 중인지, 커널 모드로 실행 중인지는 플래그 레지스터 속 슈퍼바이저 플래그를 보면 알 수 있습니다. 04장 106쪽 표 참조
요컨대 사용자 모드로 실행되는 프로그램이 자원에 접근하는 운영체제 서비스를 제공받으려면 운영체제에 요청을 보내 커널모드로 전환되어야 합니다. 이때 운영체제 서비스를 제공받기 위한 요청을 시스템 호출 (System call, 시스템 콜) 이라고 합니다.
운영체제의 핵심 서비스
프로세스 관리
실행 중인 프로그램을 프로세스 (process) 라고 합니다.
추가로, 여러 프로세스가 동시에 실행되는 환경에서는 '프로세스 동기화' 가 필수적이고, 프로세스가 꼼짝도 못하고 더 이상 실행되지 못하는 상황인 '교착 상태' 를 해결해야 합니다.
CPU 스케줄링이라는 것이 있다.
이 책에서 다룰 대표적인 커널의 서비스로는 프로세스 관리, 자원 접근 및 할당, 파일 시스템 관리가 있습니다.
가상 머신과 이중 모드의 발전
가상 머신 또한 응용 프로그램이며, 가상 머신상에 설치된 운영체제 또한 사용자 모드로 작동합니다.
그래서 가상화를 지원하는 CPU 는 커널 모드와 사용자 모드 이외에 가상 머신을 위한 모드인 하이퍼 바이저 모드를 따로 둡니다.
Chapter 10. 프로세스와 스레드
Chapter 11. CPU 스케줄링
Chapter 12. 프로세스 동기화
Chapter 13. 교착 상태
Chapter 14. 가상 메모리
Chapter 15. 파일 시스템
'Comupter science > 스터디' 카테고리의 다른 글
HTTP & Network Basic (2) | 2025.04.21 |
---|---|
리눅스 시작하기 (0) | 2022.08.22 |
MDN 으로 JavaScript 공부하기 (1) | 2022.07.30 |
Code It 강의 (0) | 2022.03.29 |
Git (0) | 2022.03.11 |