-
스레드란 무엇인가(공룡책에서 귀여운 곰책으로 변경)CS지식/운영체제 2021. 5. 31. 23:13
오늘은 지난 시간까지 운영체제를 공룡책으로 공부하다가 효율성이 떨어져 책을 변경했다.
효율성이 떨어진다고 생각하는 이유는 내가 독학으로 책을 읽으며 '아 이렇구나'하면서 읽히는 수준이 아니다..
그러면 3일동안은 어떻게 공부했나?
일단은 반효경교수님의 강의를 들은 상태여서 3장(프로세스)까지는 책을 읽으면서 새로운 지식을 얻을 수 있는 정도였다.
하지만, 그 뒤로는 너무 내용이 심오하고 번역본이라 이해하기 힘들게 쓰여진 것도 있고 너무 어렵게 느껴졌다.
그래서 책을 바꿔야겠다는 생각을 가지고 도서관을 갔다.
운영체제 책 종류가 많지는 않았지만 나에게 맞는 책을 발견해 빌려왔다.
책의 목차를 보면 알아야할 내용은 다 담고 있는 것같았고 설명도 전공책처럼 딱딱하게 쓰여지지 않고 예시를 들며 설명을 해줘서 이해하기 편한 책이라고 생각했다.
오늘은 프로세스와 많이 헷갈리고 아직도 잘 개념이 안잡힌 스레드부터 공부를 시작했다.
스레드는 프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위이다.
프로세스도 저장장치에 있던 프로그램이 실행되기 위해 메모리에 올라가 있는 하나의 작업 단위인 측면에서는 스레드와 차이점을 명확히 설명할 수 없다.
프로세스와 스레드의 차이점을 알기위해서는 프로그램이 실행되는 전반적인 과정을 보면된다.
우리가 컴퓨터에 있는 프로그램을 실행시키면 운영체제는 저장장치에 있던 프로그램에 대한 코드와 데이터를 메모리에 가져오고 메모리의 운영체제영역에 프로세스 제어 블록(PCB)을 생성하고 작업에 필요한 메모리 영역을 확보한다.
그 후 , CPU를 선점하기 위해 준비 큐에 삽입되어 기다린다.
이렇게 프로그램이 실행되기 위해 메모리영역에 PCB가 생성되고 하나의 프로그램을 실행하기 위한 작업 단위를 프로세스라고 한다.
프로세스가 생성되면 CPU 스케줄러는 프로세스가 해야 할 일을 CPU에 전달하고 CPU가 작업을 담당한다.
이 때 CPU 스케줄러가 CPU에 전달하는 일 하나가 스레드이다.
스레드를 공부하보니 헷갈리는 용어가 있어 정리해보려 한다.
- 멀티스레드: 운영체제 관점에서는 프로세스 내 작업을 여러 개의 스레드로 분할함으로써 작업의 부담을 줄이는 프로세스 운영 기법이고 CPU에서는 한 번에 하나씩 처리해야하는 스레드를 파이프라인 기법을 이용하여 동시에 여러 스레드를 처리하는 병렬 처리 기법을 말한다.
- 멀티태스킹: CPU가 작업(스레드)을 번갈아가며 실행하는 것으로 마치 여러 작업을 동시에 실행하는 것처럼 보이게 된다.
- 멀티프로세싱: CPU를 여러 개 사용하여 여러 개의 스레드를 동시에 처리하는 작업 환경
'CS지식 > 운영체제' 카테고리의 다른 글
프로세스 간 통신(IPC)란 무엇인가 (0) 2021.06.06 CPU 스케줄러란 무엇인가 (0) 2021.06.03 프로세스(Process)란 무엇인가 (0) 2021.05.28 시스템 콜(System Call)이란 무엇인가 (0) 2021.05.25 인터럽트(Interrupts)란 무엇인가(공룡책 공부 시작!!) (0) 2021.05.22