Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

README.md

link




전체적인 큰틀잡기(System Design Concepts Course and Interview Prep | freeCodeCamp.org)


Kernel 공부하기

https://git.kernel.org/

strace 를 이용해서 명령어에 의한 시스템 콜들을 추적

https://access.redhat.com/ko/articles/3118571

리눅스 시스템콜 공부(시스템 프로그래밍)

https://man7.org/linux/man-pages/man2/_syscall.2.html

Process status


  • Batch Job(시스템 상태)

    • [상태]
      • Create
      • Run
      • Terminate
  • 시분할 시스템 상태(time-sharing)

    • [상태]
      • Active State

        • Create(생성)
        • Readying(준비)
        • Running(실행)
        • Waiting(대기)
        • Terminating(종료)

      • Inactive State

        • Pause State(휴식)
        • Suspend State(보류)
  • time-sharing


https://enlqn1010.tistory.com/30

stateDiagram-v2
    [*New생성_상태] --> Ready
    Ready --> Run : Schedule/Dispatch
    Run --> Ready : Priority/Time<br>quantum<br>타이머 인터럽트
    Ready --> Suspend/ready : Suspend
    Suspend/ready --> Ready : Resume
    Run --> Wait/block : I/O Request
    Wait/block --> Ready : I/O Completion
    Wait/block --> Suspend/wait : Suspend
    Suspend/wait --> Wait/block: Resume
    Suspend/wait --> Suspend/ready : Process complted I/O but still in suspend
    Run --> [*Termination종료_상태] : Completion

Loading
stateDiagram-v2
    [*New생성_상태] --> Ready
    Ready --> Run : Schedule/Dispatch
    Run --> Ready : Priority/Time<br>quantum<br>타이머 인터럽트
    Ready --> Suspend/ready : Suspend
    Suspend/ready --> Ready : Resume
    Run --> Wait/block : I/O Request
    Wait/block --> Ready : I/O Completion
    Wait/block --> Suspend/wait : Suspend
    Suspend/wait --> Wait/block: Resume
    Suspend/wait --> Suspend/ready : Process complted I/O but still in suspend
    Run --> [*Termination종료_상태] : Completion
  • 큰 흐름
stateDiagram-v2
    [*New생성_상태] --> Ready
    Ready --> Run : Schedule/Dispatch
    Run --> Ready : Priority/Time<br>quantum<br>타이머 인터럽트
    Run --> [*Termination종료_상태] : Completion
Loading

CPU Scheduling Algorithms

---
title: CPU Scheduling
---
stateDiagram-v2
    [*Plull_of_Job_in_Disk] --> Ready_Queue : Long term Scheduler
    Ready_Queue --> Dispatcher : Short term Scheduler
    Dispatcher --> CPU
    Dispatcher --> Waiting_Queue : Mid-term Scheduler
    Waiting_Queue --> I/O : Mid-term Scheduler
    I/O --> Ready_Queue
    CPU --> [*End]
Loading
---
title: CPU Scheduling
---
stateDiagram-v2
    [*Plull_of_Job_in_Disk] --> Ready_Queue : Long term Scheduler
    Ready_Queue --> Dispatcher : Short term Scheduler
    Dispatcher --> CPU
    Dispatcher --> Waiting_Queue : Mid-term Scheduler
    Waiting_Queue --> I/O : Mid-term Scheduler
    I/O --> Ready_Queue
    CPU --> [*End]


Preemptive Scheduling Non-preemptive Scheduling
A processor can be preempted to execute the different processes in the middle of any current process execution. Once the processor starts its execution, it must finish it before executing the other. It can’t be paused in the middle.
CPU utilization is more efficient compared to Non-Preemptive Scheduling. CPU utilization is less efficient compared to preemptive Scheduling.
Waiting and response time of preemptive Scheduling is less. Waiting and response time of the non-preemptive Scheduling method is higher.
Preemptive Scheduling is prioritized. The highest priority process is a process that is currently utilized. When any process enters the state of running, the state of that process is never deleted from the scheduler until it finishes its job.
Preemptive Scheduling is flexible. Non-preemptive Scheduling is rigid.
Examples: – Shortest Remaining Time First, Round Robin, etc. Examples: First Come First Serve, Shortest Job First, Priority Scheduling, etc.
Preemptive Scheduling algorithm can be pre-empted that is the process can be Scheduled In non-preemptive scheduling process cannot be Scheduled
In this process, the CPU is allocated to the processes for a specific time period. In this process, CPU is allocated to the process until it terminates or switches to the waiting state.
Preemptive algorithm has the overhead of switching the process from the ready state to the running state and vice-versa. Non-preemptive Scheduling has no such overhead of switching the process from running into the ready state.


스와핑(Swapping)

  • 스와핑(swapping)
    • 프로세스를 보조기억장치의 일부 영역으로 쫓아내고 당장 필요한 프로세스를 적재하는 메모리 관리 기법
  • 스왑 아웃(swap-out)
    • 프로세스를 보조기억장치의 일부 영역으로 쫓아내는 것
  • 스왑 인(swap-in)
    • 스왑 아웃된 프로세스를 메모리에 적재하는 것
  • 스왑 영역
    • 스왑 아웃된 프로세스가 적재되는 보조기억장치 영역

단편화(Fragmentation)

https://ko.wikipedia.org/wiki/%EB%8B%A8%ED%8E%B8%ED%99%94

외부단편화(External Fragmentation)

https://byjus.com/gate/external-fragmentation-in-os-notes/

Difference between Internal and External fragmentation

https://www.geeksforgeeks.org/difference-between-internal-and-external-fragmentation/

Page Table

https://en.wikipedia.org/wiki/Page_table

Paging의 모든 정보 정리됨

https://courses.engr.illinois.edu/cs241/su2012/lecture/1112-memory-finale.pdf

PTBR

Valid Bit

Page Fault

https://en.wikipedia.org/wiki/Page_fault

Protection Bit

Reference Bit

Modify Bit & Dirty Bit


Thrashing(스레싱)


understanding mmap, the workhorse behind keeping memory access efficient in linux | Chris Kanich|🔝|


Memory

Introduction to Memory Management in Linux | The Linux Foundation|🔝|


Unix system calls (1/2) | Brian Will|🔝|

Unix system calls (2/2) | Brian Will|🔝|

Why Linux Has This Syscall?! | Tsoding|🔝|


Hardware Basics | Brian Will|🔝|