컴퓨터의 하드웨어를 관리하고, 하드웨어와 소프트웨어, 사용자를 매개하는 프로그램
응용 프로그램이 실행되고, 시스템 자원을 사용할 수 있도록 권한과 사용자를 관리한다.
시스템 콜: 응용 프로그램이 운영체제에 시스템 자원을 사용하기 위해 요청을 보낼 수 있는 API
실행 중인 프로그램의 코드가 메모리에 적재되어 CPU가 해당 명령어를 하나씩 수행하고 있는 상태를 의미한다.
특정 목적을 수행하기 위해 나열된 작업의 목록
프로세서에 의해 실행 중인 프로그램
유저 메모리 영역 관리
프로세스 별로 가지는 독립적인 유저 메모리 영역을 관리하는 관리 테이블
핸드 테이블
프로세스에서 사용하는 모든 핸들에 대한 커널 객체 포인터 정보를 배열 형태로 가지고 있는 공간
독립적인 메모리 공간
페이징 기법을 이용하여 프로세스마다 별도의 고유한 메모리를 사용할 수 있게 한다. (Code, Data, Stack, Heap)
하드웨어 프로세서: CPU. 컴퓨터 내에서 프로그램을 수행하는 하드웨어 유닛. 적어도 하나 이상의 ALU와 레지스터를 내장한다.
소프트웨어 프로세서: 워드프로세서, 컴파일러 등. 데이터 포맷을 변환하는 역할을 수행하는 데이터 처리 시스템.
명령어가 CPU를 통해서 수행되는 객체의 단위
프로세스 내에서 실행되는 흐름의 단위
하나의 프로세스 내에는 반드시 1개 이상의 스레드가 존재한다.
스레드는 같은 프로세스에 있는 자원과 상태를 공유한다.
하나의 스레드에서 오픈한 파일을 다른 스레드가 사용할 수 있다.
프로세스가 종료되면 스레드도 함께 종료된다.
여러 개의 작업 단위로 구성된 프로그램에서 요청을 동시에 독립적으로 처리하기 위해 필요하다.
시작해서 종료할 때까지 한 번에 하나씩 명령을 수행한다.
스레드는 다른 스레드와 독립적으로 동작한다.
각 스레드마다 call stack이 존재한다. 나머지 메모리 영역 Data, Code, Heap 영역은 공유한다.
각 스레드의 실행 및 종료 순서는 예측할 수 없다.
가상 CPU, 수행코드, 처리 데이터로 구성된다.
프로세스가 단일 스레드로 동작하는 방식
일련의 처리를 단일 스레드만으로 직렬 처리하는 프로그래밍 방법
하나의 레지스터, 스택으로 표현한다.
e.g. 자바스크립트
하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 방식
멀티 프로세스: 여러개의 CPU를 사용하여 여러 프로세스를 동시에 수행하는 것
동시에 돌릴 수 있는 스레드 수는 컴퓨터에 있는 코어 개수로 제한된다.
운영체제는 각 스레드를 시간에 따라 분할하여 여러 스레드를 일정 시간마다 돌아가며 실행되도록 한다. ➞ 시분할
동시성: 시분할 방식으로 동시에 수행되는 것처럼 착각을 불러일으킴
병렬성: 멀티 코어 환경에서 여러개의 스레드가 실제로 동시에 수행됨