no image
[OS] 스레드(Thread), 스케줄링(Scheduling), 컨텍스트 스위칭 (Context Switching)
이전 포스팅을 요약해서 복습해보자면, 프로세스란 실행 환경과 자원을 제공하는 컨테이너 역할을 하고, 실제 CPU를 사용하여 코드를 한줄씩 처리하는 것은 스레드이다.CPU 코어가 1개이고 , 프로세스가 2개이며, A프로세스에는 스레드가 1개, B 프로세스에는 스레드가 2개라고 가정하자. 그렇다면 처리 과정은 대략 아래 그림과 같다이후 이 과정을 반복하여 모든 프로세스의 스레드를 실행한다.단일 코어 스케줄링스케줄링 방법은 따로 포스팅해야할 정도로 길기 때문에, 간단히 언급만 하고 넘어가겠다!먼저 운영체제는 내부에 스케줄링을 위한 큐를 가지고 있고, 각각의 스레드는 스케줄링 큐에서 대기한다. 그리고 스레드가 처리되는 과정은 아래와 같다.우선 순위가 높은 스레드부터 한 줄씩 코드가 처리되면, 스케줄링 큐의 가장..
2024.11.03
no image
[OS] 프로세스(Process)와 스레드(Thread)
지난번 내용과 이어서, 이번엔 프로세스와 스레드에 대해 알아보자프로그램은 실제 실행 되기 전에는 그저 단순한 파일로써 존재한다.하지만 우리가 프로그램을 실행하면, 프로세스가 생성되면서 프로그램이 실행된다.프로세스에 대해서 밑에서 자세히 알아보자프로세스(Process) 란?먼저 프로세스는 코드섹션 + 데이터 섹션 + 힙 + 스택 으로 이루어져 있다.코드섹션 : 실행할 프로그램의 코드가 저장되어 있는 부분데이터 섹션(기타) : 전역 변수및 정적 변수가 저장되는 부분힙 : 동적으로 할당되는 메모리 영역스택 : 메서드 호출시 생성되는 지역 변수와 반환 주소가 저장되는 영역(스레드)Java식 표현으로 표현하자면, 프로세스는 실행중인 프로그램의 인스턴스이다.그러므로 각 프로세스는 모두 메모리에 독립적으로 존재하며 ..
2024.11.03
no image
[OS] 멀티 태스킹 (Multi Tasking), 멀티 프로세싱(Multi Processing)
이번 포스팅은 멀티 태스킹과 멀티 프로세싱에 대해 정리 해보겠다!예를 들어, 피파(프로그램A) 를 하면서 유튜브(프로그램 B) 를 본다고 가정하자.단일 프로그램 실행만약 연산을 처리할 수 있는 CPU 코어가 1개(싱글 코어)라고 한다면, 한 번에 하나의 프로그램 코드를 실행할 수 있다. 이런식으로, 하나의 코드라인씩 꺼내와서 A 프로그램을 마친 후에, B 프로그램도 A 프로그램과 같이 실행한다.위와 같은 방법은 코어가 하나이므로 한 번에 하나의 프로그램 코드만 실행 할 수 있다. 이처럼 하나의 프로그램을 완전히 마친 후에 다을 프로그램의 코드를 실행 할 수 있다면 진짜 개답답해서 죽을 수 도 있을 것 같다..이를 해결하기 위해 하나의 CPU 코어로 여러 프로그램을 동시에 실행하는 멀티 태스킹 기능 기술이..
2024.11.02