[운영체제] CPU 스케줄링 알아보기
·
CS/운영체제
안녕하세요! 피피아노입니다 🎵 이번 포스팅에서는 오랜만에 운영체제에 대해서 다뤄볼건데 그 중에서도 CPU 스케줄링에 대해서 한번 정리를 해보려고 합니다. 본론에 들어가기에 앞서서!운영체제가 CPU로 할당하는 대상에는 프로세스 뿐만 아니라 스레드도 포함이 되어 있지만 이번 포스팅에서는 이 두가지를 '프로세스'로 통칭해서 포스팅한다는 점 유의하고 봐주시면 감사하겠습니다. 스케줄링이란?먼저 기본적인 부분부터 짚고 넘어가겠습니다.  모든 프로세스와 스레드는 실행되기 위해 자원을 필요로 합니다. 여기서 자원이란 프로세스가 실행되기 위해 요구되는 모든 요소를 의미하죠. 따라서 자원 배분은 매우 중요한 문제입니다. 하지만 만약 이 중요한 자원을 무작위로 배분해, 어떤 프로세스에는 100 중 80을 주고, 다른 곳에..
[운영체제] 프로세스의 메모리 구조
·
CS/운영체제
1. 프로세스의 메모리 구조 운영체제는 프로세스에 적절한 메모리를 할당한다. 프로세스의 메모리 구조는 아래 구조를 기반으로 할당하게 된다. 스택(stack), 힙(heap), 데이터 영역(BSS segment, Data segment),코드 영역(code segment)으로 나눠진다. 스택은 위 주소부터 할당되고 힙은 아래 주소부터 할당된다. 2. 스택과 힙 스택과 힙은 동적 할당이 되며, 동적 할당은 런타임 단계에서 메모리를 할당 받는 것을 말한다. 스택은 지역 변수, 매개변수, 실행되는 함수에 의해 늘어나거나 줄어드는 메모리 영역이다. 함수가 호출될 때마다 호출될 때의 환경 등 특정 정보가 스택에 저장된다. 또한 재귀 함수가 호출된다고 했을 때 새로운 스택 프레임이 매번 사용된다. 그렇기 때문에 함수..
[운영체제] 프로세스와 스레드
·
CS/운영체제
1. 프로세스 프로세스(process)는 컴퓨터에서 실행되고 있는 프로그램을 말하며 CPU 스케줄링의 대상이 되는 작업(task)이라는 용어와 같은 의미로 쓰인다. 스레드는 프로세스 내 작업의 흐름을 말한다. 프로그램이 메모리에 올라가면 프로세스가 되는 인스턴스화가 일어나고, 이후 운영체제의 CPU 스케줄러에 따라 CPU가 프로세스를 실행한다. 2. 전처리 소스 코드의 주석을 제거하고 #include 등 헤더 파일을 병합하여 매크로를 치환한다. 3. 컴파일러 오류처리, 코드 최적화 작업을 하며 어셈블리어로 변환한다. 4. 어셈블러 어셈블리어는 목적 코드로 변환된다. 이때 확장자는 운영체제마다 다르다. 5. 링커 프로그램 내에 있는 라이브러리 함수 또는 다른 파일들과 목적 코드를 결합하여 실행 파일을 만든..
[운영체제] 운영체제 구조와 종류
·
CS/운영체제
1. 커널(Kernel) 운영체제의 핵심(core) 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 필수 기능을 모아 놓은 것이다. 2. 인터페이스 커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려주는 역할 GUI (Graphical User Interface) : 그래픽을 기반한 사용자 인터페이스 GLI (Command Line Interface) : 텍스트 기반의 사용자 인터페이스 3. 시스템 호출 커널이 제공하는 시스템 자원의 사용과 연관된 함수 커널이 제공하는 인터페이스 System Call 컴퓨터의 자원을 이용하기 위해 사용자 인터페이스 또는 응용프로그램이 커널에게 접근하기 위한 유일한 수단이다. 컴퓨터 자원의 효율적인 보호를 해준다. 4. 시스템 호출을 통한 접근 커널..