[TIL] 3장 3.1 ~ 3.2 프로세스와 스레드 그리고 커널

ki hyun Lee·2022년 5월 23일
0

TIL

목록 보기
14/16

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가 어떤 방식으로 작동하는지 아주 조금은 알 것 같다. 내가 이때까지 너무나도 익숙해서 당연하게 사용해왔던 기능들이 누군가는 뼈 빠지게 고생해서 만든 기능들이라는 것을 생각하니 굉장히 감사하게 되었다.

profile
Full Stack Developer at Team Verse

0개의 댓글