### 용어 정의
#### task와 problem
* problem(문제)
solution(해결 방법)이 여러 가지가 있다.
가장 적절한 solution을 찾아서 해결해야 할 대상이다.
* task(과업, 과제)
솔루션이 이미 존재한다.
해내기만 하면 된다.
#### job, task, process
* job(작업, 잡)
완료해야 할 일(work)이다.
실행 중인 일의 완전한 단위다.
일괄(batch) 모드에서, job은 일련의 task로 이뤄진다.
* task(태스크)
해야 할 일(work)의 일부분이다.
실행되는 일의 단위다.
작업(job)의 일부분이다.
* process(프로세스)
실행 중인 프로그램이다.
자신의 주소 공간을 가지고 있다.
#### process와 procedure
* process(공정, 프로세스)
연관된 task 또는 method가 모인 것이다.
입력을 출력으로 바꾼다.
시작하고 멈출 수 있는 대상이다.
* procedure(절차, 프로시져, 프로시듀어, 프러시저)
프로세스 또는 프로세스의 일부를 처리하는 방법을 미리 작성한 것이다.
시작하거나 멈출 수 있는 대상이 아니다.
### Process, Task, Thread
* Process
운영체제로부터 자원을 할당받는 단위
프로세스는 독립된 메모리 영역을 할당받으며, 메모리 영역은 Code, Data, Stack, Heap 으로 총 4가지 영역으로 나뉜다.
* Code Area
실행할 프로그램의 코드가 저장되는 영역
컴파일 타임에 결정된다.
중간에 코드가 바뀌지 않도록 Read-Only 형태로 저장된다.
* Data Area
전역 변수와 정적 변수, 배열이 저장되는 영역
프로그램의 시작과 동시에 할당된다.
실행 도중 변수 값이 변경될 수 있으니, Read-Write 형태로 저장된다.
* Stack Area
함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역
스택 영역에 저장되는 함수의 호출정보를 스택 프래임이라 한다.
메모리의 높은 주소에서 낮은 주소의 방향으로 할당된다.
* Heap Area
사용자가 관리하고 해야하는 메모리 영역이다.
사용자에 의해 메모리 공간이 동적으로 할당되고 해제된다.
메모리의 낮은 주소에서 높은 주소의 방향으로 할당된다.
* Thread
프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위
프로세스 내의 메모리 영역을 공유하면서 쓰레드는 각자 stack을 별도로 가진다.
* Process 와 Thread
Process는 1개 이상의 Thread를 가진다.
Task는 Process 와 Thread 모두를 지칭
Process 와 Thread를 구분하는 이유는 문맥 전환 (Context Switching) 간의 오버헤드를 줄이기 위함.
* Context Switching (문맥 전환)
CU가 실행 중인 Task의 context를 저장하고 다음 진행할 task의 context를 읽어서 수행하는 과정
OS가 있는 시스템 : CPU가 어떤 프로세스를 실행하고 있는 상태에서 요청에 의해 다음 우선 순위의 프로세스가 실행되어야할 때 기존 프로세스의 상태 또는 레지스터를 저장하고 CU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터로 교체하는 작업
OS를 탑재한 시스템의 경우 프로세스가 문맥 전환의 단위이며, 임베디드 시스템의 경우 태스크가 문맥 전환의 단위가 된다.
* Multi-process
운영체제에서 하나의 응용 프로그램에 대해서 동시에 여러 개의 프로세스를 사용하는 기술
프로세스 간 데이터 교환을 위해 IPC(Inter-Process Comm.)이 필요하다.
* 장점
* 프로그램 안정성
프로세스 마다 독립 메모리 공간을 가지기 때문에 어떤 프로세스의 실패가 다른 프로세스가 영향을 주지 않는다.
* 단점
* 문맥 전환 오버헤드
* Multi-thread
하나의 프로세스 안에 여러 개의 스레드를 사용하는 기술
Heap을 공유하기 때문에 효율적으로 효율적으로 데이터 교환이 가능하나, 동시성 문제를 해결해야한다.
* 장점 (내부 자원을 공유하기 때문에)
* 문맥 전환 비용이 감소
* 메모리 자원 공유(Heap)로 자원 효율성 증대
* 응답성 향상
* 단점 (내부 자원을 공유하기 때문에)
* 하나의 스레드의 실패가 같은 프로세스 내의 다른 스레드에 영향을 준다.
* 공유 자원에 대한 동시 접근으로 인해 동기화 문제 처리 필요
* Multi-task
https://lectures.tik.ee.ethz.ch/es/slides/4_ProgrammingParadigms.pdf
용어정리
2024. 2. 21. 17:59
반응형
728x90