네트워크

프로그램 / 프로세스 / 쓰레드

개발자국S2 2023. 3. 15. 13:29

CPU : 컴퓨터 하드웨어에서 연산을 담당하는 놈

프로그램 : 무언가를 실행시키기 위한 파일
프로세스 : 프로그램이 메모리 위에 적재되어있고, CPU를 할당받아 실행중인 상태
CPU는 한번에 하나의 프로세스만 실행할 수 있다. 다만, 컨텍스트 스위칭 속도가 매우 빨라서 우리가 '동시에' 진행된다고 느끼는 것이다. 
스위치를 해주는 순서를 정해주는 것을 '스케쥴링'이라고 한다. 운영체제는 준비큐에 있는 프로세스 중 하나의 프로세스를 골라 실행시킨다. 
이 스케쥴링은 선점형 / 비선점형으로 나뉜다. 그리고 그는 스케줄링 알고리즘에 따라 또 나뉜다. 
멀티 프로세스 : 다수의 CPU가 하나이상의 작업을 동시에 처리하는 것. 하나의 프로세스가 죽더라도 다른 프로세스에 영향을 주지 않아 안정성이 높다. 
 >>  자식 fork() 개념 : 함수를 호출한 프로세스를 복사하는 기능. 이 때 부모프로세스와 자식프로세스가 나뉘어 실행된다. 포크를 하는건 쉘에서 하나의 명령어를 실행하는 것과 같다. 
fork()함수가 성공하면 자식프로세스의 id를 반환, 실패하면 -1반환

(사실 잘 모르겠음)
자세한 설명 : 
 https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=joyangel93&logNo=220400967632 
https://geekride.com/fork-forking-vs-threading-thread-linux-kernel/
쓰레드 : 프로세스는 CDSH(코드 / 데이터 / 스택 / 힙) 영역으로 나뉘어져있는데, 이 중 스택영역을 할당받은 하나의 작업흐름이라고 보면된다. 
프로세스 내에서 실제로 작업을 수행하는 주체다. 
멀티 쓰레드 : 하나의 프로세스는 하나이상의 쓰레드를 갖는데, 여러 스레드를 가지는 프로세스를 멀티쓰레드 프로세스라고 부른다. 멀티 프로세스보다 작은 메모리 공간을 차지하고 그렇기에 빠르지만, 
하이퍼쓰레드 : 모르겠음

반응형