<2025.3.13.목요일 수업>

📍 1. 컴퓨터 시스템과 하드웨어
1-1. 컴퓨터 시스템의 범위 - 컴퓨터 시스템을 구성하는 계층
1️⃣ 응용소프트웨어
2️⃣ 운영체제
✔️ 상위 계층과 하드웨어 간의 인터페이스 역할
✔️ 상위 계층에게 하드웨어를 추상화 함
✔️ 하위 계층 관리
3️⃣ 컴퓨터 하드웨어
📍 2. 컴퓨터 하드웨어
2-1. 컴퓨터 하드웨어 구성
CPU, 레지스터, 메모리, 캐시, 버스
2-2. CPU
✔️ 기계 명령어를 수행하고, 다른 수행 장치들을 제어함
1️⃣ 제어 장치
기계 명령어를 해석하여 수행하기 위한 제어 신호들을 발생
2️⃣ ALU(산술논리장치)
산술, 논리 연산들을 수행
3️⃣ 레지스터
CPU동작에 필요한 정보 저장
2-3. 레지스터
✔️ CPU 동작에 필요한 정보를 임시로 저장하기 위한 초고속 기억장치
2-4. 메모리
✔️ CPU에 의해 수행되는 코드와 데이터가 적재되는 공간
✔️ 다수의 cell로 구성, 각 cell은 8비트의 모임
➡️ n개의 셀로 구성된 메모리는 주소를 위해 log2(n)개의 비트가 필요
2-5. cache(캐시)
✔️ 메인 메모리에 저장된 명령과 데이터 블록을 임시로 저장하는 기억장치
☑️ 기억장치 계층구조에서 소량의 캐시가 효과적인 이유?
CPU가 프로그램을 수행할 때 코드와 데이터의 참조 지역성 원리를 이용하기 때문
✔️ locality of reference(참조 지역성)
CPU가 프로그램을 수행하는 짧은 시간 동안에 발생하는 명령 또는 데이터에 대한 접근이 메모리 상에 하나의 군집을 이루는 경향
✔️ spatial locality(공간 지역성)
일련의 인접한 메모리 위치들과 관련된 수행 경향 (수행될 가능성이 있는 애들을 예측해 캐시에 미리 저장)
캐시 제어 논리가 일반적으로 보다 큰 캐시 블록을 사용하고, 선반입*을 수용함으로써 활용
(*선반입: 사용이 예상되는 항목을 미리 반입)
e.g.) 배열, 순차접근
✔️ temporal locality(시간 지역성)
최근 사용했던 메모리 위치에 다시 접근하는 경향
최근에 사용된 명령어와 데이터 값을 캐시에 유지하고 캐시 계층 구조를 활용하는 방식으로 이용
e.g.) 반복문, 재귀 루프, 함수 호출
2-6. bus
✔️ CPU, 캐시, 메인 메모리, I/O 장치 등을 연결하여 장치들 간에 서로 데이터를 송수신하기 위한 공통의 통로
✔️분류
위치에 따른 분류: 내부/외부
용도에 따른 분류: 주소/데이터/제어
목적: 시스템/입출력
📍 3. CPU와 메모리의 관계

📍 4. CPU 기계 명령
✔️ CPU의 제어 장치가 해석하고 수행할 수 있는 기계 명령
✔️ 기계 명령은 CPU를 설계할 때 결정
CPU에 따라 개수와 형태 다름, CPU는 이에 따라 RISC/CISC 구조로 구분
✔️ 어셈블리어 명령
- CPU설계자는 기계 명령에 대응하는 어셈블리 명령을 설계
- 기계어 명령의 가독성을 높이기 위함
📍5. CPU의 기계 명령 주기
5-1. 프로그램 수행
✔️ 컴퓨터는 프로그램을 구성하는 기계 명령들을 필요한 대로 메인 메모리에서 CPU로 복사
✔️ 기계 명령은 CPU에서 해석되고 수행
5-2. 기계 명령 주기(instruction cycle, CPU cycle)
➡️ 인출 ➡️ 해석 ➡️ 실행 ➡️
e.g.) 단일 기계 명령의 수행 과정

📍 6. 스택의 위치
6-1. user stack(사용자 스택)
✔️ 프로그램 수행 시 함수 호출을 처리하기 위해 메모리에 생성되는 자료구조
✔️ 함수 호출 규약(calling conventions)
- x86: 스택을 이용해 매개변수 전달
- x64: 레지스터와 스택을 통해 매개변수 전달
✔️ 사용자 스택에 저장되는 정보
1️⃣ 함수의 매개변수
2️⃣ 함수 호출이 종료된 뒤 돌아갈 주소
3️⃣ 이전 스택 프레임 포인터(SFP)
4️⃣ 함수에서 선언된 지역 변수
6-2. 이미지* 측면에서 프로그램과 프로세스의 차이
1️⃣ code 공간
프로그램 코드가 적재되는 메모리 공간
2️⃣ data 공간
전역 변수들이 적재되는 메모리 공간
3️⃣ heap 공간
프로그램 수행 중 동적으로 생성된 데이터를 저장할 메모리 공간
4️⃣ 사용자 스택 공간
함수가 호출될 때 매개변수, 지역변수, 함수가 수행을 마치고 복귀할 주소 등을 저장하기 위한 공간
(*이미지: 애플리케이션 실행에 필요한 프로그램, 라이브러리, OS, 네트워크 설정값 등을 모아 하나의 객체로 만든 것)
📍 7. 컨텍스트(문맥)
7-1. 컨텍스트의 정의
✔️ 운영체제가 수행 중인 프로그램을 제어하기 위해 필요한 모든 수행 정보
✔️ 운영체제 상의 문맥: OS가 관리(제어)하는 것들
스케줄링과 상태, 자료구조화, IPC, 할당된 권한, 메모리 관리, 입출력(파일) 상태, 자원의 소유권과 이용률 등
✔️ context는 운영체제(OS 커널)만이 접근 가능
7-2. context switching
✔️ 현재 CPU를 사용 중인 프로세스의 CPU 제어권이 다른 프로세스로 이양되는 과정
= 기존에 실행 중인 프로세스 context를 백업하고 새로운 프로세스 실행을 위해 context를 복구하는 과정
➡️ 여러 프로세스가 끊임없이 빠르게 번갈아가며 실행되는 원리
📍 8. 멀티 코어 CPU
✔️ 성능과 에너지 효율 향상을 위해 하나의 실리콘 기판에 2개 이상의 명령 수행 장치(코어*)를 내장한 CPU
- Chip Multi-Processor라고도 함
(*코어: CPU 내에서 명령어를 해석하고 실행하는 실제 연산 장치)

'운영체제' 카테고리의 다른 글
[운영체제] 2. 컴퓨터 시스템과 운영체제 - (4) 커널과 인터럽트 (0) | 2025.04.09 |
---|---|
[운영체제] 2. 컴퓨터 시스템과 운영체제 - (3) 커널과 시스템 호출 (0) | 2025.04.09 |
[운영체제] 2. 컴퓨터 시스템과 운영체제 - (2) 컴퓨터 시스템의 계층구조와 운영체제 인터페이스 (0) | 2025.04.09 |
[운영체제] 1. 운영체제 개요 - (2) 운영체제 유형, (3) 운영체제 구조 (1) | 2025.04.09 |
[운영체제] 1. 운영체제 개요 - (1) 운영체제 개념 (0) | 2025.04.09 |