2025.03.22
TIL(TODAY I LEARN)
-
WEEK02 :
이분 탐색, 분할 정복, 스택, 큐, 우선순위 큐, Linked List, 해시 테이블
-
컴퓨터 시스템 책(CSAPP)의 새로운 부분을 읽어보자
-
이어서 알고리즘을 풀어보자
1.5 캐시가 중요하다.
- 레지스터 ←——> 메인 메모리 수백 바이트 십억개의 바이트 100배 빠름 느림
- 캐시 : 프로세서-메모리의 격차에 대응하기 위해 등장
1.6 저장장치들은 계층구조를 이룬다.
1.7 운영체제는 하드웨어를 관리한다.
- OS(operating system) - 하드웨어와 소프트웨어 사이에 위치한 소프트웨어 계층
- 목적
- 제멋대로 동작하는 응용프로그램들이 하드웨어를 잘못 사용하는 것을 막기 위해
- 응용프로그램들이 단순하고 균일한 메커니즘을 사용하여 복잡하고 매우 다른 저수준 하드웨어 장치들을 조작할 수 있도록 하기 위해
- 위의 목적을 추상화를 통해 달성 → 프로세스, 가상메모리, 파일
1.7.1 프로세스
- 실행중인 프로그램에 대한 운영체제의 추상화
- 프로그램이 실행될 때 운영체제가 시스템에서 한개의 프로그램만 실행되는 것처럼 보여줌.
- 컨텍스트 - 프로세스가 실행하는 데 필요한 모든 상태정보
- 동시성(concurrency) - 문맥 전환(context switching)을 통해 동시에 실행하는 것처럼 보여줌.
- 문맥 전환 - 실행중인 작업을 바꾸기 위해 상태(문맥)을 저장하고 복원하는 작업
- 시스템 콜 - 사용자 프로그램이 운영체제(커널)의 기능을 요청할 때 사용하는 통로
- 커널 - 운영체제의 핵심. 프로세스/메모리/디스크/입출력 제어 등을 담당
1.7.2 쓰레드(Thread)
- 프로세스 내에서 실제 작업을 수행하는 실행 단위
→ 운영체제는 동시성을 위해
여러 프로세스/스레드를 번갈아 실행시켜야 하고,
이를 위해 컨텍스트 스위칭을 수행한다.
컨텍스트 스위칭은
- 타임 슬라이스가 끝났을 때,
- 시스템 콜로 인해 대기 상태가 되었을 때,
- 인터럽트가 발생했을 때 등 다양한 상황에서 발생하며,
이때 커널이 개입해 현재 프로세스의 상태를 저장하고,
다른 프로세스의 상태를 복원한 뒤,
사용자 모드로 다시 실행을 이어간다.
1.7.3 가상 메모리
- 각 프로세스들이 메인 메모리 전체를 독점적으로 사용하고 있는 것 같은 환상을 제공하는 추상화
| 영역 | 용도 | 주소 |
|---|
| 코드 영역 (text) | 실행 코드 | 0 |
| 데이터 영역 (data) | 전역변수, static 변수 | |
| 힙 (heap) | 동적 메모리 (malloc, new 등) | |
| ⬇️ | |
| ⬆️ | |
| 스택 (stack) | 지역변수, 함수 호출 정보 | |
| 커널 영역 | 시스템 호출용 (유저가 직접 접근 불가) | N |
1.7.4 파일
- 연속된 바이트들
- 모든 입출력장치는 파일로 모델링