일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Introduction to Algorithms
- SvelteKit
- 알고리즘
- 3세대 암호화폐
- 그림으로 공부하는 IT 인프라 구조
- vite
- 밸리데이션
- tailwindcss
- Nestjs
- React Hook Form
- webpack
- 도커
- 자료구조
- 힙 정렬
- 리액트 훅 폼
- vscode
- 퀵 정렬의 성능
- svelte
- Bio-O-Notation
- 스마트 컨트랙트
- 2세대 암호화폐
- 프론트
- 계수 정렬
- nextjs
- 점근 표기법
- Java
- 블록체인
- velog
- 리액트
- 우선 순위 큐
Archives
- Today
- Total
ki hyun's 개발블로그
[TIL] 3장 3.1 ~ 3.2 프로세스와 스레드 그리고 커널 본문
반응형
TIL (Today I Learned)
2022.05.23
오늘 읽은 범위
3장. 3계층형 시스템을 살펴보자
프로세스와 스레드
프로세스
- 메모리 공간을 가지고 실행된다.
- 개별 처리 독립성이 높다.
- 개별적인 메모리 공간을 부여해 주어야 하기 때문에 생성시 CPU 부하가 높다. 따라서 멀티 프로세스를 사용하는 앱에서는 프로세스 생성 부담을 낮추기 위해 미리 프로세스를 시작시켜 둔다.
스레드
- 하나의 메모리 공간을 공유한다.
- 개별적인 메모리 공간을 부여해 줄 필요가 없기 때문에 가볍게 생성 할 수 있다. (생성 시 부하가 낮다)
- 메모리 공간을 공유하기 때문에 의도치 않은 데이터 읽기/쓰기가 발생할 수 있다.
⚠️ 프로세스가 메모리 공간을 공유할 수 없는 것은 아니다. 오라클 DB에서는 여러 프로세스가 '공유 메모리 공간'을 상호 이용할 수 있게 되어 있다.
OS 커널
- 심장이자 뇌이며 척수라고 표현할 정도로 OS에서 중요한 역할을 담당한다.
- 커널의 가장 중요한 역할은 뒤에서 무슨 일이 벌어지는지 은폐하면서도 편리한 인터페이스를 제공하는 것이다. 이를 통해 개발자는 하드웨어나 다른 애플리케이션에 끼치는 영향을 의식하지 않고 애플리케이션을 개발할 수 있다.
1. 시스템 콜 인터페이스
- 프로세스/스레드에서 커널로 연결되는 인터페이스
- 앱이 OS를 통해 어떤 처리를 하고 싶다면 시스템 콜이라고 하는 명령을 이용해서 커널에 명령을 내린다.
2. 프로세스 관리 (스케줄링)
- 언제, 어떤 프로세스가 어느 정도의 CPU 코어를 이용할 수 있는지, 처리 우선순위를 어떻게 결정할 것인지 등을 관리한다.
- 이 기능이 없다면 OS 라는 것이 성립하지 않을 정도로 중요한 기능이다.
3. 메모리 관리
- 메모리 영역을 관리한다.
- 프로세스가 이용하는 독립 메모리 공간을 확보하거나 상호 간의 참조 영역을 지키기 위해 독립성을 관리하는 등의 역할을 한다.
- 이 기능이 없다면 각 프로세스는 자신 이외의 프로세스가 사용하고 있는 메모리 영역 범위를 파악해야 하는데 이는 매우 어려운 일이다.
4. 네트워크 스택
- 이에 대해서는 6장에서 자세히 다룬다고 한다.
5. 파일 시스템 관리
- 파일 시스템용 인터페이스를 제공한다.
- 물리 디스크에 기록된 데이터는
01010100010
과 같이 숫자의 집합에 불과하지만 파일 시스템 덕분에 애플리케이션은 '파일'이라는 단위로 데이터를 작성하거나 삭제할 수 있다. - 주요 관리 기능으로는 디렉터리 구조 제공, 액세스 관리, 고속화, 안정성 향상 등이 있다.
6. 장치 드라이버
- 디스크나 NIC 등의 물리 장치용 인터페이스를 제공한다.
- 디스크나 NIC는 다수의 제조사가 독자 제품을 제공하고 있는데 각각에 대응하는 애플리케이션을 개발하는 것은 현실적이지 못하므로 커널은 장치 드라이버를 이용해서 그 아래에 있는 물리 장치를 은폐한다.
- 각 장치 제조사가 OS에 대응하는 장치 드라이버를 제공해서 해당 OS의 표준 장치로서 커널을 경유해 이용할 수 있게 한다.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
너무 오랫동안 TIL을 작성하지 않아 정말 오랜만에 책을 읽고 TIL을 작성해 보았다. 책을 읽고 요약하고 글을 작성하는 것은 나에게 너무나도 귀찮은 일이라서 가끔씩 조금씩 할 예정이다. 오늘 읽은 3.1 ~ 3.2에서는 프로세스와 스레드 그리고 OS 커널에 대해 설명했다. 프로세스와 스레드는 동시성이 중요한 개발을 할 때 많이 쓰인다고 하는데 아직까지 그에 대한 경험을 하지 못해봐서 그런지 잘 와닿지 않았다. 커널에 대해 알게되니 OS가 어떤 방식으로 작동하는지 아주 조금은 알 것 같다. 내가 이때까지 너무나도 익숙해서 당연하게 사용해왔던 기능들이 누군가는 뼈 빠지게 고생해서 만든 기능들이라는 것을 생각하니 굉장히 감사하게 되었다.
반응형
'TIL' 카테고리의 다른 글
[TIL] 3장 3.4 가상화 (0) | 2022.06.08 |
---|---|
[TIL] 3장 3.3 웹 데이터 흐름 (0) | 2022.05.30 |
[TIL] 2장 서버를 열어 보자 (0) | 2022.05.30 |
[TIL] 1장 인프라 아키텍처를 살펴보자 (0) | 2022.05.30 |
[TIL] 그림으로 공부하는 IT 인프라 구조를 읽기 시작하며 (0) | 2022.05.30 |
Comments