일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- dockerfile
- 데이터엔지니어링
- TIL
- 종류
- http
- 데브코스
- 정리
- S3
- Go
- PYTHON
- 컴퓨터네트워크
- 가상환경
- HADOOP
- linux
- 컴퓨터 네트워크
- TCP
- 데이터 웨어하우스
- 데이터베이스
- sql
- 파이썬
- Docker
- 자료구조
- airflow
- airflow.cfg
- AWS
- redshift
- Django
- 데이터 엔지니어링
- 운영체제
- 데이터 파이프라인
- Today
- Total
홍카나의 공부방
[운영체제] Ch.1 운영체제 정의, 레지스터, 메모리 종류, 캐시 본문
본 글은 김덕수 교수님의 2019년도 봄학기 운영체제(CPA310)
강의 내용을 바탕으로 요약 정리한 내용입니다.
https://sites.google.com/view/hpclab/courses/operating-system
운영체제란?
=> 컴퓨팅 자원을 효율적으로 관리하여 사용자에게 서비스를 제공하는 소프트웨어
프로세서
먼저 컴퓨터 하드웨어에 대해서 정리를 해본다.
컴퓨터 하드웨어는 크게 프로세서, 메모리, 주변장치로 분류할 수 있다.
그 중에서 프로세서는 CPU와 같은 것들이 존재한다.
프로세서는 중앙처리장치로, 연산을 수행하며 컴퓨터의 모든 장치의 동작을 제어한다.
이제 CPU 내부에 있는 레지스터에 대해 알아보자.
레지스터는 프로세서 내부에 있는 메모리로, 컴퓨터에서 가장 빠른 메모리다.
프로세서가 사용할 데이터를 저장한다.
용도에 따라서 전용/범용 레지스터
사용자가 정보 변경이 가능하냐 여부에 따라서 사용자 가시/불가시 레지스터
저장하는 정보의 종류에 따라 데이터,주소,상태 레지스터로 분류한다.
우리가 레지스터에 직접 데이터를 저장할 수도 있다.
예를 들어 C언어를 사용할 때,
register int num1 = 10;
이런 식으로 register를 붙이면,
정수형 변수 num1은 CPU의 레지스터를 사용하여 저장한다는 의미가 되겠다.
사용자 불가시 레지스터에는 그 유명한 프로그램 카운터(PC), 명령어 레지스터(IR) 등이 있다.
컴퓨터구조 수업을 한 번쯤 수강했다면 이름은 들어봤을 레지스터들이다.
메모리, 캐시
메모리는 크게 주기억장치, 캐시, 보조기억장치로 구분할 수 있다.
주기억장치에는 우리가 주로 사용하는 DRAM이 속한다.
프로세서는 레지스터, 캐시, 메인 메모리에 있는 프로그램과 데이터에만 직접 접근할 수 있고,
보조기억장치(DISK)의 데이터, 프로그램은 메인 메모리에 옮겨서 실행해야 하기 때문에
프로세스가 디스크에서 데이터를 입출력(I/O)하려면 시간이 느려지는 병목현상이 발생하기 마련이다.
DRAM은 프로세서와 디스크 간의 입출력 병목현상(I/O bottleneck)을 해소하는 역할을 한다.
캐시 메모리는 프로세서 내부에 있는 메모리(L1, L2 Cache)로,
프로세서와 메인 메모리 간의 입출력 병목현상을 해소하는 역할을 한다.
캐시 메모리가 정말 빠르다면 우리가 캐시 메모리만 사용하면 되지 않느냐? 하겠지만.. 비싸다.
그래서 일반적인 프로세서에서 캐시 메모리는 작은 공간만 보유하고 있다. 많이 못 넣는다..
프로세서가 데이터를 가져올 때 캐시를 먼저 참조하게 되는데
필요한 데이터 블록이 캐시에 존재하면 캐시 히트( Cache hit ), 그렇지 않으면 캐시 미스( Chace Miss )를 내게 된다.
캐시 미스가 나면 메인 메모리에서 블록 단위로 데이터를 Cache에 적재하게 된다.
(메인 메모리를 들려야 하기 때문에, 느리다.)
블록 단위로 데이터를 Cache에 적재하면 참조한 주소와 인접한 주소를 참조하는 공간적 지역성이라는 특징 때문에
다음 번의 데이터를 참조할 때 캐시 히트의 확률이 높아지므로, 속도가 빨라진다.
'Operating System' 카테고리의 다른 글
[운영체제] Ch.5-2 스케쥴링 알고리즘 (0) | 2023.03.24 |
---|---|
[운영체제] Ch.5-1 프로세스 스케쥴링의 목적, 기준, 단계, 정책 (0) | 2023.03.22 |
[운영체제] Ch.4 쓰레드의 개념, 유저 쓰레드, 커널 쓰레드 (0) | 2023.03.21 |
[운영체제] Ch.3 프로세스의 정의, 상태, state diagram, 인터럽트 (0) | 2023.03.18 |
[운영체제] Ch.2 운영체제의 역할, 구분, 구조, 기능 (0) | 2023.03.17 |