본문 바로가기

TIL(Today I Learned)

[20230823 TIL] 운영체제

*운영체제
시스템의 자원과 동작을 관리하는 소프트웨어다. 프로세스, 저장장치, 네트워킹, 사용자, 하드웨어를 관리한다.

Q. 프로세스와 스레드란?
프로세스는 실행중인 프로그램을 말하고, 스레드는 프로세스의 작업 단위를 의미한다. 프로세스는 자신만의 고유 공간과 자원(CPU, 메모리)을 할당받아 사용하는 것이고, 스레드는 다른 스레드와 공간과 자원(CPU, 메모리)을 공유하면서 사용한다.

Q. 프로세스와 스레드 자원 공유 차이
프로세스는 최소 하나의 스레드를 보유하고 있으며, 각각 별도의 주소공간을 독립적으로 할당 받는다.(code, heap, stack)
스레드는 이중에 stack만 따로 할당받고 나머지 영역은 스레드끼리 서로 공유한다.

Q. 프로세스의 문제점은?
- 프로세스 생성에 큰 오버헤드가 있다. ( 프로세스를 생성할때 많은 시간이 소요됨
- 프로세스 컨텍스트 스위칭의 비효율성, 오버헤드가큼
- 프로세스 사이에 통신이 어렵다는점 (IPC사용해야함)


Q. 스레드의 출현 목적은?
- 프로세스보다 크기가 작은 실행 단위 필요
- 프로세스의 생성 및 소멸에 따른 오버헤드 감소
- 빠른 컨텍스트 스위칭
- 프로세스들의 통신 시간, 방법 어려움 해소


Q. 스레드 주소공간에 대해서 설명?
하나의 스레드가 동작하기 위해 총 6개의 공기 있다.
사적공간, 공유공간, 커널 스택
사적공간은 스레드 코드 공간, 스레드 전용 전역변수 공간, 스택 공간이 있다.
공유공간에는 데이터 공간, 힙 공간이 있다. 그리고 커널 스택이 있다.

https://zeroco.tistory.com/m/75

[개발자 면접] 프로세스와 스레드의 차이점

Q. 프로세스와 스레드의 차이점은? 프로세스는 메모리 상에서 실행중인 프로그램을 말하며, 스레드는 이 프로세스 안에서 실행되는 흐름 단위를 말한다. 프로세스는 최소 하나의 스레드를 보유

zeroco.tistory.com


* 메모리 구조


메모리에는 크게 4가지 종류가 있는데, code, data, heap, stack이 있다. 각 code는 소스코드가 들어가는 부분이고, Data는 전역변수, 정적변수가 들어가는 곳이다. Heap은 사용자가 직접 관리하는 부분으로 데이터가 동적으로 할당되는 공간이다. Stack은 함수의 호출정보, 지역변수, 매개변수들이 저장되게 된다.
https://jinshine.github.io/2018/05/17/%EC%BB%B4%ED%93%A8%ED%84%B0%20%EA%B8%B0%EC%B4%88/%EB%A9%94%EB%AA%A8%EB%A6%AC%EA%B5%AC%EC%A1%B0/

[컴퓨터 기초] 메모리구조(Memory Structure) - jinShine

프로그램 실행 순서 메모리 영역에 관해 이야기하기 전에 어떤식으로 프러그램이 실행되는지 과정을 살펴 보겠습니다. 프로그램의 정보를 읽어 메모리에 로드되는 과정을 보실 수 있으실텐데,

jinshine.github.io