✔️ 컴퓨터가 실행할 수 있는 명령어들의 집합.
✔️ 컴퓨터에서 실행 중인 프로그램.
✔️ 각각의 프로세스는 독립된 메모리 공간을 할당 받음.(메모리 공간에 명령어들과 데이터를 가짐)
✔️ 명령어를 실행하는 연산장치
✔️ 파일을 읽고 쓰거나 네트워크의 어딘가와 데이터를 주고 받는 것
✔️ 입출력 장치와 데이터를 주고 받는 것
초창기에는 단일 프로세스 시스템이였다. 한번에 하나의 프로그램만 실행되는것.
단일 프로세스 시스템의 단점은 CPU 사용률이 좋지 않다.
해결책으로 여러 개의 프로그램을 메모리에 올려놓고 동시에 실행시는 것. I/O 작업이 발생하면 다른 프로세스가 CPU 에서 실행하게 되었다.
이런 종류의 시스템을 멀티프로그래밍 이라고 한다.
남아있는 아쉬움 !
1. 하나의 프로세스가 동시에 여러 작업을 수행하지 못하는 것
2. 프로세스의 컨텍스트 스위칭은 무겁다.
3. 프로세스끼리 데이터 공유가 까다롭다.(독립적인 메모리 공간을 갖고 있기 때문)
4. 듀얼 코어가 등장.
등장 배경이 한 프로세스 안에서 여러 개의 작업들을 동시에 실행하기 위함이기 때문.
✔️ 프로세스는 한 개 이상의 스레드를 가질 수 있다.
✔️ CPU 에서 실행되는 단위(unit of execution)이다.
✔️ 같은 프로세스의 스레드들끼리 컨텍스트 스위칭은 가볍다.
✔️ 스레드들은 자신들이 속한 프로세스의 메모리 영역을 공유한다.
여러개의 프로그램이 동시에 실행된다는 의미
✔️ 목적 : CPU 사용률을 극대화 시키는 목적
✔️ 단점 : CPU 사용 시간이 길어지면 다른 프로세스는 계속 대기
✔️ 해결책 : 프로세스는 한번 CPU 를 사용할 때 아주 짧은 시간(quantum)만 CPU 에서 실행되도록 하는 것(아주 짧은 CPU 타입 만큼을 다 쪼개서 P1, P2 가 번갈아가면서 실행하는것)
✔️ 동시에 여러 프로그램을 동시에 실행 시키는것은 멀티프로그래밍과 유사
✔️ CPU 타입을 아주 짧게 쪼개서 CPU 타입 안에서 프로세스들이 서로 번갈아 가면서 실행
✔️ 목적 : 프로세스의 응답시간을 최소화 시킴.(동시에 여러 프로그램이 실행되는 것과 같이 느낌)
✔️ 의미 확장 : 여러 프로세스와 여러 스레드가 아주 짧게 쪼개진 CPU time 을 나눠 갖는 것
✔️ 하나의 프로세스가 동시에 여러 작업을 실행하는데 목적
✔️ 두 개 이상의 프로세스나 코어를 활용하는 시스템
운영체제에 대한 기본 개념에 대해 다시한번 잡을 수 있는 강의였다 ^^