CS/OS
프로세스 제어 블록(PCB)은 특정한 프로세스를 관리할 필요가 있는 정보(메타데이터)를 포함하는 운영체제 커널의 자료 구조 운영체제가 프로세스 스케줄링을 위해 프로세스에 관한 모든 정보를 가지고 있는 데이터베이스를 의미 프로그램이 실행되어 메모리에 적대되었을 때 프로세스가 생기고, 프로세스 주소 공간에 코드, 데이터, 스택 공간이 생선된다. 프로세스 고유 ID PID -> 프로세스의 고유 번호 프로세스 스케줄링 상태 생성(new), 준비(ready), 실행(running), 대기(waiting), 종료(terminated)를 저장 프로세스 우선순위 스케줄링 및 프로세스 우선 순위 계정 정보 CPU 사용 시간, 실제 사용된 시간 프로그램 카운터 프로세스를 위해 실행될 다음 명령어의 주소를 포함하는 카운터 ..
프로세스란? 컴퓨터에서 연속적으로 실행되고 있는 프로그램 메모리에 올라와 실행되고 있는 프로그램의 인스턴스 (독립적인 개체) 운영체제로부터 시스템 자원을 할당받는 작업의 단위 프로세스 내부에는 최소 하나의 스레드를 가지고 있고, 스레드 단위로 스케줄링한다. 프로그램을 실행하면, 실행을 위해서 메모리 할당이 이루어지고, 할당된 메모리 공간으로 바이너리 코드가 올라가는데 이 순간 부터 프로세스라고 부른다. 스레드란? 프로세스 내에서 실행되는 여러 흐름의 단위 프로세스의 특정한 수행 경로 프로세스에서 할당 받은 자원을 이용하는 실행 흐름의 단위 스레드는 OS의 스케줄러에 의해 독립적으로 관리될 수 있는 프로그래밍된 명령어의 가장 작은 시퀀스, 하나의 프로세스는 하나 이상의 스레드를 갖는다. 스레드가 독립적으로..
프로세스 컴파일 과정 컴파일(Compile) 이란? 인간이 이해할 수 있는 언어로 작성된 "소스 코드"를 CPU가 이해할 수 있는 언어로 번역(변환)하는 작업을 의미한다. (컴퓨터는 0, 1로 이루어진 기계어만 이해할 수 있기 때문) 과정 전처리 - 컴파일 과정 - 어셈블리 과정 - 링킹 과정 으로 4 가지 단계로 나누어진다. 전처리 (Pre-Processing) 과정 소스 코드 파일을 전처리된 소스 파일로 변환하는 과정 이 과정에서 아래 세 가지 작업 수행 1. 주석 제거 👉 소스 코드에서 주석을 전부 제거 (주석은 사람이 알아보기 위해 작성한 것이므로 컴퓨터한테는 필요없다.) 2. 헤더 파일 삽입 👉 헤더 파일을 찾아 헤더 파일에 있는 모든 내용을 복사해서 소스 코드에 삽입한다. 헤더 파일에 선언된 ..
CPU(Central Processing Unit) : 중앙처리장치 CPU는 한마디로 표현하자면 '컴퓨터의 두뇌'와 같은 역할을 담당한다. '중앙처리장치' 라는 말 그대로 중앙에서 사용자들이 입력한 명령어를 해석하고 연산한 후 그 결과를 제어하는 역할을 담당 -> 중앙에서 모든 데이터를 처리하는 장치라는 의미 CPU를 한 줄로 표현해본다면 “연산을 위해 만들어진 수많은 트랜지스터의 집합체" CPU는 내부적으로 크게 3가지로 나눌 수 있다. 연산을 수행하는 산술논리장치(ALU) 제어 명령을 전달하는 컨트롤 장치(CU) 결과 값을 일시적으로 기억하는 레지스터(Register) 중앙처리장치의 대표적인 구성장치 제어장치(Control Unit) : 컴퓨터에 있는 모든 장치들의 동작을 지시하고 제어하는 장치이다...
프로세스(Process) : OS가 작업을 할당하는 단위, 현재 실행 중인 프로그램(program in executing)을 뜻한다. 일반적으로 잡(job)이라는 용어와 혼용해 사용하기도 한다. - 독자적인 메모리 공간을 가지고 다른 프로세스와 통신하기 위해 시스템콜을 호출하여 진행해야 한다. - 컨텍스트 스위치 과정에서 모든 영역에 대하여 PCB에 저장하고 넘겨야되기에 쓰레드보다 많은 시간이 소요된다. 프로세스의 주소 영역(메모리 영역) 프로세스의 주소 영역은 크게 코드(Code), 데이터(Data), 힙(Heap), 스택(Stack)영역으로 구분된다. 코드 영역은 실행할 프로그램 코드가 저장되는 부분이다. 데이터 영역은 전역 변수(global variable)나 static 변수 등 프로그램이 사용하..
프로그램 실행 순서 프로그램의 정보를 읽어 메모리에 로드되는 과정을 볼 수 있다. 프로그램이 실행하게 되면 OS는 메모리(RAM)에 공간을 할당해준다. 할당해주는 메모리 공간은 4가지(Code, Data, Stack, Heap)가 있다. 코드(Code) 우리가 작성한 소스코드가 들어가는 부분. 즉, 실행할 프로그램의 코드가 저장되는 영역으로 텍스트(code)영역이라고 부른다. 코드 영역은 실행파일을 구성하는 명령어들이 올라가는 메모리 영역으로 함수, 제어문, 상수 등이 여기에 저장된다. : 프로그램 언어로 작성된 내용들이 컴파일되어 저장되어 있다. 데이터(Data) 전역변수와 static변수가 할당되는 영역 프로그램의 시작과 동시에 할당되고, 프로그램이 종료되어야 메모리가 소멸되는 영역 스택(Stack)..
메모리의 기본개념 메모리는 CPU와 같은 반도체 하드웨어로서 일종의 데이터를 저장하는 저정장치 역할을 수행한다. 데이터를 읽고 쓰는 속도가 매우 빠르며, CPU가 직접 접근이 가능하다. 또한 전원이 꺼지면 저장 돼 있던 데이터가 모두 사라지는 특성을 가지고 있기 때문에 단순히 주소로서만 접근하는 저장공간이라고 할 수 있다. 소프트웨어 즉, 프로그램이 실행되기 위해서는 반드시 그 내용이 메모리에 저장돼야 하고 컴퓨터의 메모리 관리를 통해 하드웨어는 CPU가 주소만을 가지고 메모리에 있는 데이터를 읽거나 쓸 수 있도록 한다. 운영체제의 메모리 관리라는 것은 프로세스가 필요한 메모리를 어떻게 얼마만큼 할당해 줄 것인가, 프로세스가 알고 있는 주소를 통해서 실제 메모리에 어떻게 접근하도록 하는 것인가 라는 할당..
운영체제 또는 오퍼레이팅 시스템(Operating System)은 시스템 하드웨어를 관리할 뿐만 아니라 응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어이다. 최근에는 가상화 기술의 발전에 힘입어 실제 하드웨어가 아닌 하이퍼바이저 위에서 실행되기도 한다. 소프트웨어 : CPU,메모리,보조기억장치,네트워크 등의 자원들을 잘 관리하여 응용 소프트웨어들에게 제공해주는 역할 하드웨어 추상화 플랫폼 또한 중요한 개념! 추상화는 프로그래밍에 있어서 매우 중요하고 유용한 개념이다. 컴퓨터 과학에서 추상화 (abstraction) : 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것을 말한다. 운영 체제에서의 추상화 (abstra..