본문 바로가기

전체 글

운영체제 강의 12 📌 프로세스와 관련한 시스템 콜 ‣ fork() : create a child (copy) ‣ exec() : overlay new image ‣ wait() : sleep until child is done ‣ exit() : frees all the resources, notify parent 📌 wait() 시스템 콜 - 프로세스 A가 wait() 시스템 콜을 호출하면 ✓ 커널은 child가 종료될 때까지 프로세스 A를 sleep시킨다 (block 상태) ✓ Child process가 종료되면 커널은 프로세스 A를 깨운다 (ready 상태) 📌 exit() 시스템 콜 ‣ 프로세스의 종료 ✓ 자발적 종료 • 마지막 statement 수행 후 exit() 시스템 콜을 통해 • 프로그램에 명시적으로 적어.. 더보기
운영체제 강의 11 1. 프로세스 생성 (Process Creation) - 부모 프로세스(Parent process)가 자식 프로세스(children process) 생성 - 프로세스의 트리(계층 구조) 형성 - 프로세스는 자원을 필요로 함 ✓ 운영체제로부터 받는다 ✓ 부모와 공유한다 - 자원의 공유 ✓ 부모와 자식이 모든 자원을 공유하는 모델 ✓ 일부를 공유하는 모델 ✓ 전혀 공유하지 않는 모델 - 수행(Execution) ✓ 부모와 자식은 공존하며 수행되는 모델 ✓ 자식이 종료(terminate)될 때까지 부모가 기다리는(wait) 모델 - 주소 공간 (Address space) ✓ 자식은 부모의 공간을 복사함 (binary and OS data) ✓ 자식은 그 공간에 새로운 프로그램을 올림 - 유닉스의 예 ✓ for.. 더보기
운영체제 강의 10 1. 프로세스 상태도 2. Thread 프로세스 A -> B : 문맥교환은 save, load...와 같이 오버헤드가 많은 작업이다. 하지만 동일한 프로세스 내에서 스레드1 ->2로 cpu가 넘어가는 것은 문맥교환의 오버헤드가 필요없고 효율적으로 수행 가능하다 스레드는 프로세스 내부에서 cpu 수행 단위에 해당하는 것이다. ‣ Thread의 구성 ✓ program counter ✓ register set ✓ stack space ‣ Thread가 동료 thread와 공유하는 부분(=task) ✓ code section ✓ data section ✓ OS resources ‣ 전통적인 개념의 heavyweight precess는 하나의 thread를 가지고 있는 task로 볼 수 있다 ‣ 다중 스레드로 구.. 더보기
운영체제 강의 9 1. 스케줄러 (Scheduler) 📌 Long-term scheduler (장기 스케줄러 or job scheduler) ✓ 시작 프로세스 중 어떤 것들을 ready queue로 보낼지 결정 ✓ 프로세스에 memory(및 각종 자원)을 주는 문제 ✓ degree of Multiprogramming을 제어 ✓ time sharing system에는 보통 장기 스케줄러가 없음(무조건 ready) 📌 Short-term scheduler (단기 스케줄러 or CPU scheduler) ✓ 어떤 프로세스를 다음번에 running시킬지 결정 ✓ 프로세스에 CPU를 주는 문제 ✓ 충분히 빨라야 함 (millisecond 단위) 📌 Medium-Term Scheduler (중기 스케줄러 or Swapper) ✓ 여.. 더보기
운영체제 강의 8 1. 프로세스의 개념 📌 프로세스는 실행중인 프로그램이다 📌 프로세스의 문맥(context) ✓ CPU 수행 상태를 나타내는 하드웨어 문맥 • Program Counter • 각종 register ✓ 프로세스의 주소 공간 • code, data, stack ✓ 프로세스 관련 커널 자료 구조 • PCB (Process Control Block) • Kernel stack 2. 프로세스의 상태 📌 프로세스는 상태(state)가 변경되며 수행된다 ✓ Running : CPU를 잡고 instruction을 수행중인 상태 ✓ Ready : CPU를 기다리는 상태 (메모리 등 다른 조건을 모두 만족하고) ✓ Blocked (wait, sleep) : CPU를 주어도 당장 instruction을 수행할 수 없는 상태.. 더보기
운영체제 강의 7 1. 프로그램의 실행 (메모리 load) 2. 커널 주소 공간의 내용 3. 사용자 프로그램이 사용하는 함수 📌 함수 (function) ✓ 사용자 정의 함수 : 자신의 프로그램에서 정의한 함수 ✓ 라이브러리 함수 : 자신의 프로그램에서 정의하지 않고 갖다 쓴 함수 자신의 프로그램의 실행 파일에 포함되어 있다 ✓ 커널 함수 : 운영체제 프로그램의 함수 커널 함수의 호출 = 시스템 콜 4. 프로그램의 실행 더보기
운영체제 강의 6 1. 인터럽트 (Interrupt) 📌 인터럽트 : 인터럽트 당한 시점의 레지스터와 program counter를 save한 후, CPU의 제어를 인터럽트 처리 루틴에 넘긴다 📌 interrupt (넓은 의미) ✓ interrupt (하드웨어 인터럽트) : 하드웨어가 발생시킨 인터럽트 ✓ Trap (소프트웨어 인터럽트) • Exception : 프로그램이 오류를 범한 경우 • System call : 프로그램이 커널 함수를 호출하는 경우 📌 인터럽트 관련 용어 ✓ 인터럽트 벡터 : 해당 인터럽트의 처리 루틴 주소를 가지고 있음 (운영체제의 어디에 있는 코드를 실행해야하는지, 인터럽트 종류별로 실행해야될 코드의 위치를 담고 있음) ✓ 인터럽트 처리 루틴 (=interrupt Service Routine, .. 더보기
운영체제 강의 5 1. 컴퓨터 시스템 구조 2. Mode bit 📌 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호 장치 필요 📌 Mode bit을 통해 하드웨어적으로 두 가지 모드의 operation 지원 1 사용자 모드 : 사용자 프로그램 수행 0 모니터 모드 : OS 코드 수행 ✓ 보안을 해칠 수 있는 중요한 명령어는 모니터 모드에서만 수행 가능한 '특권명령'으로 규정 ✓ interrupt나 Exception 발생시 하드웨어가 mode bit을 0으로 바꿈 ✓ 사용자 프로그램에게 CPU를 넘기기 전에 mode bit을 1로 셋팅 * 모니터모드 (=커널 모드, 시스템 모드) 3. Timer ✓ 정해진 시간이 흐른 뒤 운영체제에게 제어권이 넘어가도록 인터럽트를 발생시킴 .. 더보기