{n_u}.log
로그인
{n_u}.log
로그인
CS - Process & Thread
iseon_u
·
2022년 6월 11일
팔로우
0
CS
Code area
Context Switching
Data area
Multi-core
Thread
heap
memory
multi thread
multi-process
network
process
stack
CS
목록 보기
1/2
Process & Thread 프로세스와 스레드
Process 프로세스
컴퓨터에서 실행되고 있는 프로그램
CPU 스케줄링의 대상이 되는 작업 (task) 과 같은 의미
코드, 데이터, 스택, 힙 메모리 영역 기반으로 작업
Thread 스레드
프로세스내 작업의 흐름
프로세스내의 스택 메모리 영역을 제외한 다른 메모리 영역을 프로세스내 다른 스레드와 공유
프로세스의 실행 가능한 가장 작은 단위
프로세스는 여러 스레드를 가질 수 있다.
경량화된 프로세스
Program & Process
프로그램
보조기억 장치 (HDD/SSD) 저장 되어 있는 것
프로세스
프로그램이 메모리 (RAM) 에 올라가면 프로세스가 되는 인스턴스화가 일어난다.
운영체제의 CPU 스케줄러에 따라 CPU 프로세스를 실행한다.
프로세스의 인스턴스화
프로세스가 필요한 재료들이 메모리에 올라간다.
해당 프로세스에 대한 정보를 담고 있는 PCB (Process Control Block) 생성
Memory 메모리 구조
운영체제는 프로세스에 적절한 메모리를 다음과 같은 구조로 할당
Stack 스택
스택에는 지역 변수, 매개 변수, 함수 일시적인 데이터 저장
컴파일 시에 크기가 결정되고 동적인 특징을 갖는다.
Heap 힙
힙은 동적 할당할 때 사용되며 런타임 시 크기가 결정
벡터 같은 동적 배열은 힙에 할당
힙은 동적인 특징을 갖는다.
Data area 데이터 영역
데이터 영역은 전역 변수, 정적 변수가 저장
정적인 특징을 갖는 프로그램이 종료되면 사라지는 변수가 들어 있는 영역
Code area 코드 영역
코드 영역은 프로그램에 내장되어 있는 소스 코드가 들어가는 영역
수정 불가능한 기계어로 저장되어 있으며 정적인 특징을 갖는다.
멀티 프로세스
한 어플리케이션에 대한 처리 방식의 일종
부모 프로세스가 fork() 를 해서 자식 프로세스를 여러 개 만들어 처리
자식 프로세스는 부모와 별개의 메모리 영역 확보
각 프로세스는 독립적
IPC (Inter-Process Communication) 프로세스간의 통신을 사용
자원 소모적, 개별 메모리 차지
동기화 작업이 필요하지 않는다.
멀티 스레드
한 어플리케이션에 대한 처리 방식의 일종
한 프로세스 내에서 구분지어진 실행 단위
프로세스 내 작업을 여러 개의 스레드로 처리하는 기법
서로 자원을 공유하기 때문에 효율성이 높다.
동시성
한 순간에 여러가지 일이 아니라, 짧은 전환으로 여러가지 일을
동시에 처리하는 것처럼 보이는 것
서로 독립적인 적업들을 작은 단위로 나누고
동시에 실행되는 것 처럼 보여주는 것
스레드끼리 긴밀하게 연결되어 있다.
공유된 자원으로 통신 비용 절감
공유된 자원으로 메모리가 효율적
컨텍스트 스위칭 비용이 적다.
공유 자원 관리를 해야한다.
Context Switching 컨텍스트 스위칭
프로세스의 컨텍스트 스위칭
프로세스의 상태를 교체하는 작업 (실행 ↔ 준비)
스레드의 컨텍스트 스위칭
공용으로 사용할 것들을 공유 사용
Multi-core
멀티 프로세스와 멀티 스레드는 소프트웨어 분야적 처리 방식의 일종
Concurrency 동시성
하나의 코어에서 하나 이상의 프로세스 혹은 스레드가 번갈아가면서 진행되지만 동시에 진행되는 것처럼 보이는 것
멀티 코어는 조금 더 하드웨어의 측면에 가깝다.
Parallelism 병렬 처리
동시에 하나 이상의 프로세스 혹은 스레드가 한꺼번에 진행
물리적으로 여러 코어를 사용해서 다수의 실행 단위를 한 순간에 처리
iseon_u
🧑🏻💻 Hello World!
팔로우
다음 포스트
CS - Transistor
0개의 댓글
댓글 작성