IT/컴퓨터구조와 운영체제 21

[Memory management] Memory virtualization, Dynamic relocation, Segmentation

💡Memory virtualization & Address Space - for Abstraction OS는 physical memory를 virtualize하여,각 프로세스가 전체 메모리를 전부 사용하는 것처럼 보이게 한다. 이를 통해 process 간의 isolation을 보장하며, time과 space 면에서 메모리 관리의 효율이 높아진다.  💡1. Dynamic Relocation: HW base  프로세스 하나가 allocation의 unit이다.  ✅Address translationphysical address =  해당 프로세스의 base + virtual address 단, 0 ≤ virtual address  프로그램이 실행을 시작하면, 이 프로세스를 physical memory의 ..

[운영체제란] 운영체제의 역할, HW의 support

운영체제의 역할✅Abstact machinehide underlying details API 제공, system calls✅Resource manager각 application에 시간적/공간적 공유 자원을 allocate    시간적: CPU(app간), network    공간적: memory(app간), disk(user간)한정적 자원의 사용을 효율적으로.   overhead 최소화✅protectionapplication 간에 서로서로 보호 OS 보호 hardware에의 직접적 접근 방지  운영체제를 위한 HW support ✅app이 실행되는 원리OS 실행 시작됨이 OS의 코드는 메모리의 어딘가에 들어감OS의 instruction이 처리됨OS는 사용자 입력을 받아 특정 app을 인식함OS는 실행하려..

[Scheduling in multiple CPU] SQMS, MQMS, CFS, O(1), BFS

Cache Affinity프로세스가 가능한 한 하나의 CPU에서만 실행되게 하는 것 -> 해당 프로세스의 state가 이미 그 CPU의 cache에 남아있으므로, 다음 번에 프로세스가 실행될 때 훨씬 빨라진다. 만약 cache에 해당 프로세스의 state가 없다면, main memory에서 가져와야 하는데, 이것은 cache에 비해 매우 느림. 💡scheduling 방식✅SQMS: Single queue Multiprocessor Scheduling스케줄되어야 하는 job들이 한 queue에 전부 들어가 있다.   단점 - 단일 queue가 여러 CPU에게 공유되어야 하므로 locks가 필요한데, 이 locks는 성능을 크게 떨어뜨리고 scalability가 낮다.- 프로세스들은 매번(매 time sl..

[Scheduling in single CPU] FIFO, SJF, STCF, RR, MLFQ, Lottery, Stride, CFS

💡Scheduling이란?멀티프로그래밍 시스템 (: 실행이 준비된 프로세스가 두 개 이상)에서, OS의 일부인 scheduler는 scheduling 알고리즘을 이용해 무엇을 실행할지 결정한다.🚩스케줄러는 아래와 같이 context switch가 일어나는 모든 순간 invoke되어 다음 실행할 프로세스를 결정한다.   프로세스 생성/종료 후   I/O에서 프로세스 block   I/O 인터럽트 발생    timer 인터럽트 발생 (preemtive한 경우)   ✅스케줄링을 평가하는 metricsturnaround time = 완수된 시점 - 도착한 시점 response time = 처음으로 실행된 시점 - 도착한 시점 fairness = first job이 완수되는 시간 / second job이 완수..

[Synchronization] Condition Variables

💡Condition variables스레드가 실행을 하면 안되는 상황(특정 조건 미충족 등)일 때 자기 스스로를 넣어놓는 queue이다. ✅스레드는 condition variable에 대해 아래와 같은 동작을 수행할 수 있다. - wait(condition_variable, lock): 실행하면 안되는 상황일 때, 스레드 자신의 lock을 release하고 스스로를 어떤 queue에 넣음- signal(condition_variable): 스레드 자신의 state를 바꾸면서, waiting하던 다른 스레드 하나를 깨움 ✅condition variable을 이용하기 위해서는 아래 요소도 필요하다.- state variable: child 스레드가 일을 끝냈는지 여부- locks: state variabl..

[Synchronization] Locks(Mutex)

💡Locks의 개념 ✅Lock 변수 : Lock 변수는 Lock의 상태를 담고 있다. * unlocked: 아무 thread도 lock을 갖고있지 않다. * locked: 딱 하나의 thread가 lock을 갖고 있으며 Critical section 내부에 있다. ✅lock() : lock 획득을 시도한다. 만약 아무 thread도 lock을 갖고있지 않았다면, lock을 획득하고 Critical section에 진입한다. 이 thread가 lock을 갖고있는 동안 다른 thread는 CS 진입이 불가하다. ✅fine-grained approach - better concurrency 여러 개의 변수를 보호하기 위해선 변수마다 하나씩 lock이 있어야 한다. lock() lock() CS1 unlock(..

[Thread] 스레드 사용의 목적, 스레드 vs 프로세스, 스레드의 자원, 스레드 API

💡스레드란 ✅목적 프로세스 간에는 서로의 데이터를 읽을 수 없다. 반면, 스레드끼리는 공유된 메모리를 통해 적은 비용의 커뮤니케이션이 가능하다. 이러한 스레드의 사용으로써, - 리소스가 절약된다. - 여러 request가 감당 가능해진다. - Input/Output 작동과 computation 작동이 동시에 일어날 수 있다. - context switching의 비용이 비교적 덜 든다. - multiprocessor에 더 잘 매핑된다. ✅스레드는 "함수"의 형태로 instruction stream을 실행한다. ✅Process vs. Thread 아래는 한 프로세스에 여러 스레드가 있는 예시이다. 반면 아래는 "프로세스"가 두 개인 것이고, 스레드는 활용되지 않았다. 💡스레드와 Address space 각..

[Process] Process의 개념, Address Space, State, Context switch, API

💡프로세스란 Program: 실행 파일. 코드와 데이터로 이루어져 있음. Process: program의 실행 중인 instance. 💡프로세스의 Address Space (Memory Layout) 모든 각각의 프로세스는 아래와 같이 자신만의 가상 메모리 주소 공간을 가진다. stack: 지역 변수 heap: 동적 할당된 변수 BSS: 초기화되지 않은 정적 변수 data: 초기화된 정적 변수 text: 프로그램 코드 💡프로세스 스케줄링 CPU 안에는 core가 있는데, 이 코어라는 것은 엄밀하게는 한 순간에 하나의 프로세스만을 다룰 수 있으므로, 여러 개의 프로세스가 (거의) 동시에 돌아가기 위해서는 교통정리, 즉 스케줄링이 필요하다. 프로세스의 state ✅New 새 프로세스가 생성되었지만, 아직 운..

[Pipeline CPU] in RV32I CPU microarchitecture

이 글에 포함된 모든 사진 자료들은 (서태원 지음) 에서 가져왔습니다. Pipeline CPU란 “ pipeline CPU란, single-cycle CPU 구조를 여러 stage로 나누어, 각 부분을 동시에 활용되게끔 하는 것이다. (아래 사진 참고) single-cycle CPU에서는, 하나의 instruction이 완료되고 나서야 그 다음 instruction을 수행한 데 비해, pipeline CPU의 경우, 매 clock cycle의 각 stage에서는 다른 instruction이 실행되고 있다. (아래 사진 참고) “ 전형적인 것은 5-stage pipeline CPU이며, 각 stage는 다음과 같다: IF(Instruction Fetch): 명령어를 읽는 단계 ID(Instruction D..