-
운영체제 관련 정보들을 저장해놓는 문서
-
운영체제 공부 블로그
-
윈도우 실행파일 구조 (PE 파일)
- 커널 오브젝트 : 운영체제가 전용으로 사용하는 영역 (윈도우 핸들 등). 유저가 임의로 생성할 수 없다.
- 유저가 함수로 구현할 수 없는 강력한 기능들을 제공한다.
-
스레드
- 프로세스를 동작시키는 실행 흐름. 프로세스는 최소 하나의 스레드를 가지게 된다.
- 같은 프로세스에서 동작하기 때문에 스레드끼리는 자원 공유가 가능하다.
- 이 때문에,
스레드 간의 의존도를 줄이는 것이 좋은 스레드 설계 방법이다.
-
스레드 스케쥴러
- 스레드 실행 순서를 관리하는 것
- 운영 체제가 가지고 있다. 절대 유저가 건드려서 안된다.
-
컨텍스트 스위칭
- 현재 실행되는 스레드를 다른 스레드로 변경하는 것
- 다른 스레드가 사용하고 있는 자원을 현재 스레드에서 사용할 때 그 값을 보장해줄 수 없다. 컨텍스트 스위칭이 언제 일어날 지 모르기 때문.
- 그래서
스레드 동기화를 하는 방법을 지원한다.
-
스레드 동기화: 스레드 내에서 내가 원하는 특정 부분(또는 스레드 전체)들을 동기화 처리하는 것 -
스레드 동기화를 위한유저 모드와커널 모드가 있다.- 커널 모드 : 굉장히 강력한 기능들을 제공해주지만 유저 모드에 비해 느리다.
뮤텍스,세마포어,이벤트기법이 있다.
- 유저 모드 : 커널 모드에 비해 빠르지만 기능이 좀 적다.
크리티컬 섹션이라는 기능을 제공한다.- 게임에서 주로 사용한다. 빨라서 (+ 이벤트 도 사용한다)
- 커널 모드 : 굉장히 강력한 기능들을 제공해주지만 유저 모드에 비해 느리다.
-
데드락 : 실행 코드 내에서 언락을 하지 못해서 다른 스레드가 진행하지 못하는 현상
-
cpp에서 사용할 때_beginthreadex함수를 사용한다.beginthread는 문제가 있어서 사장된 함수 -
프로세스 :
-
멀티태스킹 : 운영체제가 여러 프로그램을 동시에 처리하는 기법
- 옛날에는 CPU의 물리적 코어 개수가 1개라 엄밀히 말하면 동시에 실행하는 것이 아니라 잘게 쪼개서 동시에 실행되는 것처럼 보이게 함
- 요새는 물리적 코어의 개수가 많기 때문에 말 그대로
병렬 처리를동시 처리로 변경했다 - 태스크 개수가 코어 수보다 많으면 남는 태스크를 잘게 쪼개서 처리한다. (병렬 + 동시)
-
참고