OS101
-
[OS101] 쓰레드테크 2023. 9. 14. 17:38
본 글은 2023.09.14에 새롭게 업데이트되었습니다. 서울대학교 평생 교육원에서 제공하는 운영체제의 기초 강의 내용을 중점으로 정리했다. 부족한 부분은 책을 참고하면서 채워 나갔다. 이해를 돕기 위한 그림들은 여기에서 가져왔다. 목차 쓰레드란 무엇인가 쓰레드가 필요한 이유 쓰레드 구현 형태 멀티쓰레딩 모델 쓰레드 라이브러리 - pthreads 쓰레드란 무엇인가 쓰레드(thread)는 CPU의 실행 단위이다. 쓰레드의 개념을 정확하게 알기 위해서는 반드시 프로세스 개념을 정확하게 알아야 한다. 프로세스에는 컨텍스트와와 실행 흐름(execution stream 또는 thread of control)이 있다. 이제 이 두 개를 분리시키자. thread of control, 즉 실행 흐름을 분리시킨 것이 쓰..
-
[OS101] 프로세스테크 2023. 9. 10. 15:47
본 글은 2023.09.10에 새롭게 업데이트되었습니다. 서울대학교 평생 교육원에서 제공하는 운영체제의 기초 강의 내용을 중점으로 정리했다. 부족한 부분은 책을 참고하면서 채워 나갔다. 이해를 돕기 위한 그림들은 여기에서 가져왔다. 목차 프로세스란 무엇인가 프로세스 구현 방법 프로세스 스케줄링 프로세스 생성 및 종료 프로세스란 무엇인가 프로세스(process)는 운영 체제가 CPU, 메모리, I/O 디바이스를 할당하는 주체이다. 즉, 실행 중인 프로그램(program in execution)이다. 프로그램은 저장 매체에 저장된 명령어들의 집합체이기 때문에 수동적인 반면, 프로세스는 운영체제에 의해 저장 매체로부터 읽어져 메인 메모리에 로드된 후 CPU와 같은 자원을 능동적으로 사용하는 수행 주체이다. 또..
-
[OS101] 운영 체제를 이해하기 위한 컴퓨터 구조 기초테크 2023. 9. 5. 19:15
본 글은 2023.09.05에 새롭게 업데이트되었습니다. 서울대학교 평생 교육원에서 제공하는 운영체제의 기초 강의 내용을 중점으로 정리했다. 부족한 부분은 책을 참고하면서 채워 나갔다. 이해를 돕기 위한 그림들은 여기에서 가져왔다. 목차 개요 시스템 버스 I/O 레지스터 폴링과 인터럽트 DMA 하드웨어 보호 기법 개요 컴퓨터는 크게 연산 작업과 I/O 작업을 한다. 연산 작업은 CPU가 맡아서 처리하는 반면, I/O 작업은 수많은 I/O 디바이스들이 관여한다. 여러 I/O 디바이스들의 기능 및 속도가 매우 다양하기 때문에 운영체제는 이를 효과적으로 제어하기 위해서 I/O 시스템을 가지고 있다. 덕분에 운영 체제의 다른 부분이 I/O 디바이스를 관리하는 일에 신경 쓰지 않아도 된다. 그렇다면 컴퓨터는 어떻..
-
[OS101] 운영체제 역사 및 기능테크 2023. 9. 5. 17:24
본 글은 2023.09.05에 새롭게 업데이트되었습니다. 서울대학교 평생 교육원에서 제공하는 운영체제의 기초 강의 내용을 중점으로 정리했다. 부족한 부분은 책을 참고하면서 채워 나갔다. 이해를 돕기 위한 그림들은 여기에서 가져왔다. 목차 운영체제의 역사 운영체제의 기능 운영체제의 역사 운영체제의 역사는 크게 3단계로 나눌 수 있다. Phase 1: 운영체제의 시작, 메인 프레임 컴퓨터의 보편화 (1950 - 1960) Phase 2: 운영체제 기반 설립, 인터넷 보편화 전 (1960 - 1990) Phase 3: 인터넷 보편화 후, 오늘날 (1990 - 현재) Phase 1: 운영체제의 시작 노동력은 값싸고 하드웨어는 매우 비싸던 시절이다. 그래서 CPU 사용률을 최대화하는 것이 매우 중요했다. 연구자들..
-
Dynamic Memory Allocation지식 조각들/컴퓨터 2018. 8. 14. 01:49
목차 Dynamic Memory Allocation 힙 메모리 Dynamic Memory Allocation Dynamic memory allocation은 프로그램이 수행되는 중에 메모리가 할당되는 것을 말한다. 런타임 중에 할당되는 메모리의 종류로는 스택과 힙이 있다. 스택은 함수 호출 및 수행할 때 필요한 정보들을 담기 때문에 형식이 정해져 있어서 매우 제한적이다. 반면 힙은 제한이 없기 때문에 쓰기는 편하나 힙을 잘 관리하기가 매우 어렵다. 그렇다면 dynamic memory allocation은 왜 필요할까? 실행 중에는 예측 불가능한 상황이 나타나기 때문이다. 예측 불가능한 상황은 1) 런타임 중 변할 수 있는 메모리 영역(함수 실행, malloc, 등)과 2) 런타임 중 변할 수 있는 데이터..
-
Static Memory Allocation지식 조각들/컴퓨터 2018. 8. 13. 23:09
목차 Static Memory Allocation 프로그램이 로딩되기까지 전반적인 과정 컴파일 과정과 링킹 과정 자세히 살펴보기 Static Memory Allocation 컴퓨터 사이언스에서 static이라는 말이 붙으면 보통 실행 전(=컴파일 타임)에 일어나는 일을 말한다. Static memory allocation은 프로그램이 수행되기 전에 미리 메모리를 할당하는 것을 뜻한다. 풀어서 쓰면 컴파일 타임에 code section, data section, BSS section이 메모리에 미리 올라가는 것을 말한다. Static allocation의 특징은 변수들의 life cycle이 프로그램의 시작과 종료가 일치하는 것이다. 프로그램이 로딩되기까지 전반적인 과정 소스 파일(source file) ..
-
[OS101] CPU 스케줄링테크 2018. 8. 11. 23:29
본 글은 2023.09.15에 새롭게 업데이트되었습니다. 서울대학교 평생 교육원에서 제공하는 운영체제의 기초 강의 내용을 중점으로 정리했다. 부족한 부분은 책을 참고하면서 채워 나갔다. 이해를 돕기 위한 그림들은 여기에서 가져왔다. 목차 스케줄링 스케줄링 기준 스케줄링 정책 스케줄링 CPU-I/O Burst Cycle CPU 스케줄러 선점적 스케줄링 디스패처 프로세스는 능동적으로 여러 자원을 사용한다. 이 때 자원의 종류로는 두 가지가 있다. 선점적 자원(Preemptive Resource): 한 프로세스가 점유한 상태에서 다른 프로세스에게 양보할 수 있는 자원, 예) CPU, 메모리 비선점적 자원(Nonpreemptive Resource): 한 프로세스가 점유하면 사용을 마칠 때까지 다른 프로세스에게 ..