프로그램 : 컴퓨터가 실행할 수 있는 명령어들의 집합
프로세스 : 컴퓨터에서 실행중인 프로그램. 각각의 프로세스는 독립된 메모리 공간을 할당 받음. 명령어들과 데이터를 가짐
CPU (central processing unit) : 명령어를 실행하는 연산 장치
메인 메모리(main memory) : 프로세스가 cpu에서 실행되기 위해 대기하는 곳
I/O (input/ output) : 파일을 읽고 쓰거나 네트워크의 어딘가와 데이터를 주고받는 것. 입출력 장치와 데이터를 주고받는것
초창기의 시스템
단일 프로세스 시스템 : 한번에 하나의 프로그램만 실행됨
단점 : CPU의 사용률이 좋지 않음
해결책 : 여러개의 프로그램을 메모리에 올려놓고 동시에 실행시킴. IO작업이 발생하면 다른 프로세스가 CPU에서 실행됨
멀티프로그래밍 : cPU의 사용을 극대화 하는데 목적
단점 : CPU사용 시간이 길어지면 다른 프로세스는 계속 대기해야한다.
해결책 : 프로세스는 한번 CPU를 사용할 때 아주 짧은 시간 (=quantum)만 CPU에서 실행되도록 설정
그렇게 나온 것이 멀티태스킹(multitasking)
멀티태스킹(multitasking) : 프로세스의 응답시간을 최소화 시키는데 목적이 있다.
(컴퓨터가 실행중인 프로그램에 바로바로 응답하게 하는것)
여러 프로그램이 동시에 실행되도록 느껴지게 하는것. 아주 짧은 시간동안 교대로 프로그램이 실행되기 때문이다.
아쉬움1 : 하나의 프로세스가 동시에 여러 작업을 수행하지 못함
아쉬움2 : 프로세스의 컨텍스트 스위칭은 무거운 작업
아쉬움3 : 프로세스끼리 데이터 공유가 까다로움 (메모리가 독립적으로 할당되기 때문)
아쉬움4 : 듀얼 코어가 등장했는데 잘 쓰고싶다
이런 것들을 극복하기 위해 등장한 개념
스레드(thread)
스레드의 특징
1. 듀얼 코어가 등장했는데 잘 쓰고싶다
2. 프로세스는 한 개 이상의 스레드를 가질 수 있다.
3. 스레드는 CPU에서 실행되는 단위(unit of execution)
- 이전에는 프로세스가 CPU에서 실행되는 단위였다면 이제 스레드가 단위가 된다.
- 이제 스레드가 기본 단위가 되었기 때문에 프로세스는 기본적으로 하나의 스레드를 가지게된다.
4. 같은 프로세스의 스레드들끼리 컨텍스트 스위칭은 가볍다
5. 스레드들은 자신들이 속한 프로세스의 메모리 영역을 공유한다. (데이터 공유가 쉽다)
공유하지 않는 것도 있다 . 이 그림에서 중요한 것은 메모리 영역을 공유한다.
멀티스레딩 : 하나의 프로세스가 동시에 여러 작업을 실행하는데 목적이 있다 (여러작업 : 스레드)
멀티스레딩이 도입되면서 확장된 멀티태스킹을 개념 :
멀티태스킹 : 여러 프로세스와 여러 스레드가 아주 짧게 쪼개진 cpu time을 나눠 갖는다.
기존에는 프로세스끼리의 아주 짧은 시간의 스위칭이라면 이제 프로세스, 스레드가 스위칭하는 것
멀티프로세싱(multiprocessing) : 두 개 이상의 프로세서나 코어를 활용하는 시스템
마지막장이 최근 컴퓨터의 운영체계라고 할 수 있다.
출처 쉬운코드
'코코딩딩의 공부' 카테고리의 다른 글
[Spring] 스프링 공식문서에서 생성자 주입 권고하는 이유는? (0) | 2023.06.01 |
---|---|
[Spring] 생성자 주입, 세터주입, 필드주입에 대해 알아보자 (0) | 2023.06.01 |
상속공부 (0) | 2023.04.20 |
프로젝트 진행하며 가장 많이 신경쓰는 부분 (0) | 2023.04.13 |