Computer Science
-
[OS] 5-1. CPU SchedulingComputer Science/운영체제 2020. 10. 8. 02:39
# CPU Burst & I/O Burst 어떤 프로그램이 실행된다는 것은 CPU Burst와 I/O Burst가 번갈아 가며 일어나는 것을 의미한다. 프로그램의 종류에 따라 두 Burst의 빈번함이 다를 수 있는데, ① 사용자 관여가 많은 (키보드 입력, 모니터 출력 등이 잦은) 프로그램(interactive job)은 CPU Burst 시간이 짧아지면서 두 Burst가 번갈아 빈번히 나타나고, ② 과학 계산용 프로그램 같은 연산 시간이 긴 프로그램은 CPU Burst 시간이 길어지면서 I/O 비중이 크게 줄어든다. 위 그래프는 CPU Burst 시간과 그 빈도에 따라 프로그램들을 분류한 것인데, CPU Burst 시간이 짧을수록 프로그램의 CPU Burst 빈도가 잦음을 알 수 있다. 이 같이 CPU..
-
[OS] 4-2. Process ManagementComputer Science/운영체제 2020. 9. 24. 02:30
#프로세스의 생성, 실행 및 종료에 관한 시스템 콜 1. fork() 시스템콜 위 그림의 두 코드는 부모 프로세스(좌), 자녀 프로세스(우)이다. 처음 부모 프로세스가 코드를 수행하다가 fork 시스템 콜을 만나면, 부모 프로세스를 똑같이 복사해 자녀 프로세스를 만들고 이후 명령을 계속 실행한다. 자녀 프로세스는 부모 프로세스의 Program Counter를 그대로 복제했기 때문에, 부모 프로세스와 마찬가지로 fork의 바로 밑 코드부터 실행한다. 또한, 부모 프로세스는 fork의 return 값으로 양수, 자녀 프로세스는 0을 pid에 취해 서로를 구분한다. 2. exec() 시스템콜 fork로 복사한 프로세스를 다른 프로그램으로 다시 덮어쓰기 위해 exec 시스템콜을 사용한다. 위와 같은 경우는 ex..
-
[OS] 4-1. Process ManagementComputer Science/운영체제 2020. 9. 23. 15:36
# 프로세스의 생성 부모 프로세스가 자식 프로세스를 Copy-on-write(COW) 기법으로 생성한다. COW는 무언가의 변경(write)이 있을 때, 부모의 주소 공간 중 변화가 있는 부분을 copy해 자식의 주소 공간을 만드는 기법이다. 또한, 자식이 자식을 생성하고 그 수가 많아지면 프로세스는 트리를 형성한다. - 자식은 부모 프로세스의 ① 주소 공간(binary & OS data)을 복사해 ② 그 공간에 새로운 프로그램을 올린다. ex) 유닉스에서는 fork() 시스템 콜이 주소 공간을 복사하고 exec() 시스템 콜이 새로운 프로그램을 메모리에 올린다. - 생성된 프로세스는 자원을 운영체제로부터 받거나 부모 프로세스와 공유한다. (부모와 공유하지 않는 것이 일반적) - 수행 : 부모와 자식이 ..
-
[OS] 3-2. ProcessComputer Science/운영체제 2020. 9. 21. 04:53
# Thread (= lightweight process) (↔ heavyweight process, 전통적인 개념의 프로세스) 하나의 프로세스 내부에 CPU 수행 단위를 여러 개 두는 것을 말한다. 각각의 스레드는 CPU 수행과 관련된 정보만 제외하고 프로세스의 모든 것을 공유한다. 동일한 일을 수행하는 프로세스를 여러 개 띄워 놓고 싶다면, 하나의 주소 공간에 여러 개의 스레드를 사용하는 것이 효율적이다. 따라서, Program Counter를 여러 개 두고 register의 값들을 별도로 기억해두어 각각의 스레드가 스스로에게 필요한 code를 실행하게끔 한다. 함수 호출 및 return과 관련해서 stack도 스레드마다 따로 둔다. 1. Thread의 구성 · program counter · reg..
-
[Computer Architecture] 2. 데이터의 표현Computer Science/컴퓨터구조 2020. 9. 18. 18:49
※ 1 nibble = 4 bit ※ 8진수는 2진수에서 3자리씩, 16진수는 2진수에서 4자리씩 묶어 변환하여 표현한다. ※ 실수의 소수 부분은 이진수 변환 시 곱하며 해당 값을 계산한다. # 보수(complement)는 뺄셈과 음수를 실현한다. - one's complement(1진 보수=1의 보수) : 최댓값(해당 bit에서 가장 큰 표현형) 형성에 서로 보완 관계에 있는 두 수의 관계 ex) A + B = 9, A + B = 99 - two's complement(2진 보수=2의 보수) : Modulus(최대 표현 자리 수) 형성에 서로 보완 관계에 있는 두 수의 관계 ex) A + B = 100 (해석 : 두 자리 수를 표현하기 위한 모든 가지 수, 99(99가지)와 0(1가지)은 서로 2의 보..
-
[OS] 3-1. ProcessComputer Science/운영체제 2020. 9. 16. 23:41
# 프로세스(Process)의 개념 1. 프로세스 : 실행중인 프로그램을 의미한다. 2. 프로세스의 문맥(Context) : 프로세스의 현재 진행 상태를 알려주는 것 ∵ time sharing, multitasking 등의 실현은 각 프로세스의 문맥을 정확히 기록해두어야 가능하다! - 하드웨어 문맥 : CPU의 수행 상태를 나타냄 ex) Program Counter, 각종 register → CPU 관점에서 파악! - 프로세스의 주소 공간 : 어떤 자료구조가 어떤 값을 가지고 있는지, 어떤 함수가 호출되고 return되는지 등을 파악함 ex) code, data, stack → 메모리 관점에서 파악! - 프로세스 관련 커널 자료 구조 ex) PCB(Process Control Block), Kernel ..
-
[OS] 2-2. System Structure & Program ExecutionComputer Science/운영체제 2020. 9. 15. 16:55
# 동기식 입출력과 비동기식 입출력 1. 동기식 입출력 (synchronous I/O) I/O 요청 후 입출력 작업이 완료된 후에야 CPU 제어권이 사용자 프로그램에게 넘어가는 것을 의미한다. - 구현 방법 1 · I/O가 끝날 때까지 CPU를 낭비시킨다. · 매 시점 하나의 I/O만 일어날 수 있다. (I/O 장치도 낭비) - 구현 방법 2 · I/O 요청 후 I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗는다. · I/O 처리를 기다리는 줄에 해당 프로그램을 줄 세운다. ex) A 프로그램 I/O 작업을 줄 세우고 B 프로그램에 CPU를 할당했는데 B도 I/O를 요청하면, B 프로그램 I/O 작업도 줄 세우고 C 프로그램에 CPU를 할당한다. (∴ CPU도 I/O도 끊김 없이 자신의 작업을 ..
-
[OS] 2-1. System Structure & Program ExecutionComputer Science/운영체제 2020. 9. 9. 19:49
# 컴퓨터 시스템 구조 1. Computer (전문가적 입장에서) - CPU : 매 클럭 사이클마다 Memory에서 Instruction(기계어)을 읽어서 실행한다. Memory 및 I/O device의 local buffer에 접근할 수 있다. - Memory : CPU의 작업 공간이다. 원래는 CPU만 접근 가능한 공간이지만 DMA controller가 있다면 이 역시 접근이 허용된다. 2. I/O device - 키보드, 마우스 : 입력장치 - 모니터, 프린터 : 출력장치 - 디스크 : 보조기억장치이자 입출력장치 (디스크에서 내용을 읽으면 입력장치, 디스크에 내용을 저장하면 출력장치) # 컴퓨터 시스템 구조 (더 자세하게) 1. I/O device - device controller (장치 제어기)..