OS 25

Context Switching에서의 Thread와 Process의 관계 + PCB, TCB

Process란? - PC와 Register Set, Process ID, State, 메모리 등의 정보를 가진다. - 프로세스는 적어도 하나의 Thread를 가진다. Thread란? - CPU 스케쥴링의 기본 단위. - Program Counter, Register들과 Stack으로 구성 - Process 내부에서 여러 Thread 생성 가능하며, 코드와 메모리를 공유한다. 운영체제 책에는 이렇게 설명되어 있지만, 의문이 든다. "프로세스가 여러개의 스레드를 가지면 PCB 하나로 어떻게 저장하지? 각 Thread의 정보를 저장해야 할 텐데." 이렇게 생각해서 알아본 것이 TCB이다. PCB는 Process ID와 상태, 우선순위, 메모리 정보 등을 저장한다. 멀티스레드가 아닌 멀티프로세스 환경에서는 P..

OS 2020.05.30

컴퓨터 자원의 구조와 동작, RAM과 Disk에 대해

구조도 CPU와 I/O Controller의 관계 각각의 I/O Controller는 CPU와 독립적으로 그 기능을 수행하며, Bus라는 통로와 Interrupt를 통해 CPU와 통신한다. 프로그래밍을 할 때, 흔히 I/O 작업 수행에 대한 이야기를 한다. I/O 작업의 의미는 CPU가 I/O Controller의 Data Buffer에 데이터를 채운 후 Write 명령을 수행하는 것이다. I/O작업이 수행되면 각 I/O Controller는 독립적으로 그 기능을 수행하며, 작업이 완료되면 Interrupt를 발생시켜 최종적으로는 CPU에게 작업이 완료되었음을 알린다. RAM과 Disk RAM은 CPU가 직접 접근할 수 있는 비휘발성 메모리이며, Random Access Memory이다. RAM의 역할은..

OS 2020.05.26

[Pintos] 1. background

struct thread- thread id- thread status // running, ready, block, dying- thread name- stack pointer // saved stack pointer- priority+ allelem // list element for all threads list.+ elem // list element- pagedir // USER PROGRAM이 define되어 있다면 사용. page directory이다.- magic // detects stack overflow- 생성될 때 THREAD_MAGIC(0xcd6abf4b)으로 설정. 스택 오버플로우 발생 시 이 값이 변한다. description- kernel 스택 메모리가 작아서 스택 오버플로우..

[OS] 정리7 : 가상 메모리

exit- 종료 처리 진행 후 프로세스 종료- atexit() 함수 호출하여 exit handler에 등록된 함수 호출- 전역 or 정적 객체 소멸자 호출abort- 프로세스 즉시 종료- atexit() 호출하지 않음- 소멸자 호출되지 않음- 잘못된 기능을 수행하고 있어 더 진행되면 위험할 경우 abort 사용 프로세스가 사용하는 실제 메모리 공간- 일반적으로 0 ~ max의 연속된 메모리. 물리 메모리는 연속적이지 않을 수 있다.- MMU가 Page를 Frame으로 매핑한다. Copy On Write- 부모 프로세스와 자식 프로세스가 같은 페이지를 공유하는 것이다.- 두 프로세스 중 하나가 공유 페이지를 수정하게 되면, 복사된 페이지를 쓰게 한다.- 이 때 어떤 free page를 할당할지 결정하는 게..

OS 2018.09.27

[OS] 정리6 : 메모리 관리

프로그램이 실행되려면 메모리로 가져와야 한다. Input queue(job queue) : 프로그램을 실행하기 위해 메모리로 가져오는 것을 기다리는 프로세스 집합 - Long-term 스케줄러의 역할. 유저 프로그램은 실행되기 전에 다음 과정을 거친다. 자세한 내용은 나중에 적어두어야겠다.- Instruction Fetch : 명령어를 메모리로부터 가져온다. 메모리 -> CPU Cache- Instruction Decode : 가져온 명령어에서 PC가 가리키는 주소값을 읽고 다음 명령어가 있는 곳으로 PC값(가상 메모리 주소)을 갱신한다.- Operand Fetch : 명령어에서 사용되는 피연산자를 읽는다.- Instruction 실행 : 명령어를 실행한다.- 명령 실행 결과를 메모리에 저장 메모리 접근..

OS 2018.09.26

[OS] System call, Interrupt, Trap, 등

Interrupt- 하드웨어(I/O 포트, 그래픽 카드, 하드 디스크, 등)에서 발생. 처리가 필요할 경우에 CPU에게 그 상황을 처리할 수 있도록 알려주는 것- 인터럽트가 발생하면 실행 중인 코드를 중단하고, 인터럽트 서비스 루틴을 실행하여 인터럽트를 처리함.- 인터럽트가 발생하면 해당 프로세스는 ready queue에 들어가고 다시 스케줄링됨.- I/O 혹은 Event가 발생하면 해당 작업이 완료될 때까지 wait queue에 들어가게 된다(block 상태). 완료되면 다시 ready_queue로 들어감. System Call- 커널 기능을 커널에 요청하는 방식. Trap을 통해서 실제로 커널에 정보가 전달된다. System Call은 그 Interface라고 할 수 있음. Exception- Tra..

OS 2018.09.24

[OS] 정리5

프로세스 동기화공유 메모리에 동시 접근하면 문제가 생긴다. 다음 코드를 보자.counter++과 counter--의 구현이 다음과 같을 것이다 counter++register1 = counterregister1 = register1 + 1counter = register1 counter--register2 = counterregister2 = register1 - 1counter = register2 이제 다음과 같은 순서로 실행이 된다고 생각해 보자.counter는 5로 시작한다.결과는 counter가 5여야 하지만, 각각 4, 6이 된다. Race Condition- 여러 프로세스가 공유 데이터를 동시에 엑세스하고 조작하는 상황. 공유 데이터의 최종적인 값이 마지막으로 완료되는 프로세스에 의해 결정되..

OS 2018.09.24

[OS] 정리4

프로세스의 실행은 CPU 실행 사이클과 I/O 대기로 구성된다. 일반적으로 짧은 CPU 버스트가 많고, 적은 수로 긴 CPU 버스트가 발생한다. CPU 스케줄러- 메인 메모리에 있는 Ready 상태의 프로세스들 중 하나에게 CPU를 할당시킨다.- 스케줄링이 발생하는 경우1. running에서 wait 상태로 변경될 때 (I/O 요청하는 경우)2. running에서 ready 상태로 변경될 때 (Interrupt 발생)3. wait 상태에서 ready 상태로 변경될 때 (I/O 요청 완료)4. 종료될 때- 1, 4일 경우에만 스케줄링하는 방식이 비선점 스케줄링이다.- 1~4 모든 경우에 스케줄링하는 방식이 선점형 스케줄링이다. Dispatcher- Short-Term 스케줄러에 의해 선택된 프로세스에게 C..

OS 2018.09.24

[OS] 정리3

MultiThread Model- 프로세스의 생성 및 컨텍스트 스위칭 부하가 크므로 Thread 사용 Thread- CPU 스케줄링의 기본 단위이자 프로세스 내의 제어의 흐름이라고 할 수 있다.- PC / Registers / Stack 으로 이루어져 있다.- 각 Thread는 레지스터 상태와 Stack을 가진다.- 프로세스 내부에서 여러 스레드가 생성될 수 있고, Code / 주소공간 / 운영체제 자원을 공유한다.- Thread 실행 환경을 Task라고 하며, 프로세스는 기본적으로 하나의 스레드를 가진다.- Thread의 생성 및 Switching은 프로세스에 비해 매우 부하가 적다멀티 프로세서 혹은 멀티코어 환경- 스레드는 다른 프로세서 혹은 멀티코어 환경에서 병렬로 실행될 수 있다. 싱글 프로세서 ..

OS 2018.09.24

[OS] 정리2

Program이란, 디스크에 존재하며 명령들의 리스트를 포함하고 있는 파일 Process- Process란 Program과 Program Counter를 의미한다. 프로그램이 메모리에 올라가면 프로세스가 된다.- Code(TexT) / Data / Stack / Heap / Program Counter로 구성되어 있다.- Data : 전역변수 / Static 변수가 저장됨- Stack : 임시 변수 - 지역변수 및 함수 매개변수, 리턴값 Process State- new : 프로세스가 생성됨- ready : CPU에 할당되기를 기다림- running : 명령들 실행중- waiting : Event 발생 기다림- terminated : 실행 종료됨 PCB(Process Control Block)- 프로세스..

OS 2018.09.23
반응형