본문 바로가기

운영체제 OS

(5)
5. 운영체제 - 컴파일러 Compile 은 소스코드를 CPU 가 이해할 수 있는 기계어로 변환하는 작업이다. 여기서 소스코드는 C, C++, JAVA 등으로 작성된 파일이며, 이러한 소스코드 파일을 목적코드 파일로 변환하는 것이다. 코드를 작성하고 프로그램이 실행되는 과정은 아래와 같다. ✅ 코드 작성 ( 컴파일 ) 오브젝트 파일 ( 링킹 ) 실행 파일 ( 로드 ) 메모리 적재 후 수행 Compile 컴파일러는 Tokenizer , Lexer , Parser 를 거쳐서 구문분석 과정을 실행한다. 이 구문분석 과정이 완료되면 그 결과를 바탕으로 AST 가 생성된다. 🌲AST 란? Abstract Syntax Tree 의 약자. abstract 하게 작성된 parsing tree 로, 작성한 소스코드를 컴퓨터가 이해할 수 있도록 구..
4. 운영체제 - 프로세스 스케줄링 컴퓨터가 하나의 작업을 끝내면 다음 작업을 수행하기 위해 다른 프로세스를 선택해야한다. 이때 어떤 프로세스를 선택할지 결정하는 알고리즘이 프로세스 스케줄링이다. CPU는 하나인데 실행되어야 하는 프로세스는 그보다 많기 때문에 CPU에 할당할 순설르 정하는 것, 즉 어떤 프로세스를 running 상태로 보낼지 정하는 것이 스케줄링이다. 스케줄링에는 다양한 방법이 있는데 목적에 맞는 지표를 사용하여 방법을 선택하는 것이 중요하다. 스케줄링의 기준에는 프로세스의 특성, 시스템 특성, 프로세스의 긴급성, 우선순위, 총 실행시간 등이 있다. 스케줄링을 선택에 사용할 때는 스케줄링이 따르는 정책이 존재한다. 먼저 선점 (Preemptive) vs 비선점 (Non-Preemptive) 이 있다. 선점의 경우 현재 올..
3. 운영체제 - 스레드 관리 스레드는 프로세스 내부에서 제어하는 영역으로 프로세스 내부에는 최소 하나의 스레드가 존재한다. 메모리의 관점에서 보면 같은 프로세스의 스레드는 동일한 주소 공간을 공유하며 그 안에서 일정 부분을 스레드가 차지하고 있다. 원래는 프로세스처럼 자원과 제어 영역을 모두 가지고 있어야 하지만 스레드의 경우 자원은 공유하고 제어 부분만 가지고 있어서 Light Weight Process (프로세스보다 가볍게 취급)에 해당한다. 스레드는 대표적으로 두 가지 장점을 가지고 있다. 1. 자원을 공유해서 효율성을 증가시킬 수 있다. A와 B 두 가지의 작업이 있다고 가정해보자. 두 개의 작업을 각각의 프로세스에 저장하고 하나의 resource를 공유하게 되면 A에서 B로 switch하는 과정에서 context switc..
2. 운영체제 - 프로세스 관리 프로세스는 프로그램과는 다른 개념으로 프로그램 중에서도 커널에 등록되어 관리 하에 있는, 즉 실행 중인 프로그램으로 정의할 수 있다. 프로세스는 스케줄링 알고리즘에 의해 CPU에 할당되어 관리되는데, 스케줄링 알고리즘에 대해서는 다음에 자세하게 설명하겠다. *자원 (resource)의 정의 : 커널의 관리 하에 프로세스에게 할당되고 반납되는 수동적인 개체 (ex. h/w, s/w, resources) 프로세스의 정보는 커널이 가지고 있어야 관리가 가능하기 때문에 Process Control Block (이하 PCB)에 저장되어 관리된다. PCB를 참조하고 갱신하는 속도는 OS의 성능을 결정짓는 중요한 요소로도 여겨진다. 프로세스의 상태에 대해 간략하게 정리하자면 ready, running, block, ..
1. 운영체제 소개 및 전반 개발자라면 운영체제 수업을 꼭 들어라는 주변 교수님들과 지인들의 이야기를 듣고 본격적으로 운영체제 공부를 하기 전에 기본적인 개념들을 공부해보았다. 유튜브 강의와 구글링, 운영체제가 아닌 다른 컴퓨터 과학과 수업의 강의를 통해 배운 내용을 차근차근 복습해보려 한다. 먼저 OS 운영체제는 하드웨어(HW)를 효율적으로 관리해 사용자에게 서비스를 제공하는 소프트웨어(SW)로 정의할 수 있다. HW 위에 OS가 있고 그 위에 SW와 어플리케이션이 있는 것이 컴퓨터 시스템의 구성이라고 할 수 있다. 운영체제에서 핵심이 되는 부분은 Kernel (커널) 로, 메모리에 항상 올라가있으며 가장 빈번하게 사용되는 기능을 담당한다. 즉 HW를 관리한다고 볼 수 있다. 운영체제의 구조는 이러한 커널을 이용해 설명할 수 있는..