이 영역을 누르면 첫 페이지로 이동
시간의화살 블로그의 첫 페이지로 이동

시간의화살

페이지 맨 위로 올라가기

시간의화살

행복하세요

Computer Science/Operating System

  • 시간의화살
[Operating System] Process Scheduling

[Operating System] Process Scheduling

2025.06.09
스케쥴링 방식은 스케쥴러가 실행되는 시간 간격에 따라 Long-Term / Medium-Term / Short-Term 세 가지로 구분된다. 지금까지 계속 언급하던 Process Scheduling은 모두 Short-Term Scheduling을 의미하고, I/O 장치를 대상으로 하는 스케쥴링은 I/O Scheduling을 의미한다. Long-Term Scheduling은 생성은 됐지만 아직 메모리에 올라오지 않은 New 프로세스에 대해 수행된다. 아직 가상 주소 공간에 있는 프로세스 중 메모리에 들어갈 프로세스를 선별하는 작업이다. Medium-Term Scheduling은 메모리에 올라왔다가 일시적으로 보조기억장치로 Swap-Out 되는 프로세스들에 대해 어떤 프로세스를 다시 메모리에 올릴..
[Operating System] Thrasing

[Operating System] Thrasing

2025.06.08
Degree of Multiprogramming은 메모리에 들어온 프로세스의 수를 의미한다. (프로세스의 일부 포함)당연히 가상 메모리 방식을 사용하면 Degree of Multiprogramming이 커진다. Demand Paging 방식을 사용하면 메모리에 프로세스가 더 많이 들어오면서 CPU의 활용도가 늘어난다. Degree of Multiprogramming이 어느정도 증가하면 CPU 활용도가 오히려 더 낮아진다. CPU 활용도가 늘어나지 않으니 운영체제는 CPU가 할 일이 없다고 판단해 New 상태에 있는 프로세스를 메모리에 넣어준다.메모리의 용량은 한정되어있는데, 프로세스의 수가 계속해서 증가하면 한 프로세스가 차지하는 Page 수가 줄어들게 된다. 프로그램을 제대로 실행하려면 프로..
[Operating System] Page Replacement

[Operating System] Page Replacement

2025.06.05
Demand Paging 방식에서는 필요한 Page를 동적으로 메모리로 가져온다. 메모리에 빈 자리가 없다면 메모리에 있는 Page를 보조기억장치로 보내고 다른 Page를 메모리로 가져오는데, 이 작업을 Page Replacement 라고 부른다. Page Replacement에서는 메모리에서 Swap Out 할 Page를 결정하는 작업이 가장 중요하다. 이 작업은 운영체제가 알아서 결정하는데, 보통 가까운 미래에 사용될 것 같은 Page는 그대로 두고 나중에 사용될 것 같은 메모리는 보조기억장치로 옮기는 방식을 사용한다. Reference String은 프로그램이 실행되면서 접근하는 주소들의 Page번호만 시간 순서대로 나열한 부분이다. 맨 처음 7번 Page를 Access 해야 하는데 메모리에는..
[Operating System] Multi-Level Page Table

[Operating System] Multi-Level Page Table

2025.06.04
프로세스가 작으면 프로세스 안의 페이지도 적어 페이지당 하나씩 존재하는 Page Table Entry도 줄어든다.프로세스가 크면 페이지의 크기도 커지고 Page Table Entry도 커진다. 32비트 아키텍처에서는 가상 주소 공간의 최대 크기가 4GB이다.0~3GB까지는 code data stack이 들어간다. 전체가 4GB이고 한 조각은 4KB이니 페이지의 최대 개수는 1,000,000이다. (1M) Page Table Entry도 역시 1,000,000개 들어갈 수 있는데..Page Table도 메모리에 올라가는데, Entry 하나가 4Byte를 차지한다면 Page의 크기는 4096이니 Entry는 총 1024개를 담을 수 있다.하나의 Page로 Page Table을 저장할 수 없다. 총 10..
[Operating System] Demand Paging

[Operating System] Demand Paging

2025.06.03
가상 메모리를 구현하는 방법으로는 Paging과 Segmentaion 두 가지가 있다.모두 프로세스를 쪼개서 보조기억장치의 Virtual Address Space에 넣고, 필요한 부분만 가져오는 방식이다. Segmentation은 실행 속도가 느리니 현대 운영체제에서는 Demand Paging 방식을 사용하니.. 가상 메모리를 사용한다고 하면 그냥 Demand Paging 방식을 사용하는구나~ 라고 생각하자. Demand Paging은 실행하는데 필요한 페이지만 메모리에 가져오고 그때그때 필요한 페이지를 동적으로 가져오는 방식으로 작동한다.프로세스마다 Page Table을 만들어 논리적인 순서와 실제 메모리에서의 순서를 매핑하고 프로세스를 구성하는 Page가 현재 메모리에 올라왔는지 아닌지, 올라왔다면..
[Operating System] Paging / Segmentation

[Operating System] Paging / Segmentation

2025.06.03
메모리 파티셔닝에서 relocation 없이 Fragment 메모리를 효과적으로 사용하기 위해 Paging 전략이 도입됐다.프로세스를 일정 조각으로 조각내고 메모리를 할당하는 방식으로, 기본 단위로 4KB를 사용한다. 고정 분할 방식에서는 메모리를 일정한 크기로 분할했는데, 이런 컨셉을 페이징에서도 사용한다.다만 페이징에서는 하나의 프로세스가 여러 개의 페이지로 나뉘어서 메모리에 할당된다. 메모리 한 조각은 page frame이고, 그 안에 들어가는 프로세스의 조각을 page라고 부른다. 프로세스도 여러 page로 나뉘어서 할당되는 부분에 집중하자. 프로세스가 연달아서 배치되지 않아도 돼 External Fragment를 고려하지 않아도 된다. Internal Framgent는 여전히 발생할 수..
[Operating System] Memory Management

[Operating System] Memory Management

2025.05.17
RAID는 Redundant Array of Inexpensive(Independent) Disk의 약자로 저렴한 디스크를 여러개 사용해 품질이 좋은 디스크 하나의 효과를 내는 구성방법이다. 개인용 컴퓨터의 디스크는 비교적 저렴한 디스크를 사용해 용량도 적고 하드웨어 신뢰성도 떨어진다.보통 용량이 큰 디스크는 기업이나 공공기관이 사용한다. RAID가 도입된 시기에는 디스크 용량이 커질수록 가격은 훨씬 더 커졌고, 저용량 디스크를 조합해서 고품질 디스크를 구현하는 RAID 기술이 도입됐다. 그림은 디스크 4개를 조합해 RAID 0 (non-redundant)구조를 구현한 예시이다. strip이라는 정보 단위를 저장하고, 각 strip은 여러 디스크에 분산되어 저장된다. 이렇게 저장하면 디스크 하..
[Operating System] Disk Scheduling

[Operating System] Disk Scheduling

2025.05.13
일반적으로 디바이스 스케쥴링은 먼저 온 순서대로 진행하는데, 디스크는 선입선출 방식을 사용하지 않는다. 하나의 surface에는 20~1500개의 트랙이 있고, 디스크가 3장일 때 surface는 6개이다.cylinder는 모든 surface에서 같은 번호로 구성된 트랙의 집합을 의미한다. 그림에서 노란색으로 칠해진 트랙의 일부를 sector라고 부르고, 각 sector에는 checksum을 저장한다.가장자리 쪽의 sector는 중심쪽 sector보다 물리적 크기는 크지만, 각 sector는 같은 크기의 정보를 저장할 수 있다. (각속도 조정)checksum은 디스크에 접근할 때 오류를 계산할 때 사용된다. 디스크가 데이터를 읽을 때, 저장된 checksum과 읽은 데이터의 checksum을 비..
[Operating System] I/O Management

[Operating System] I/O Management

2025.05.11
I/O 장치는 프린터, 키보드처럼 사람이 사용하는 장치, 디스크 / 센서 / 모뎀 등 장치들 간 통신을 위해 사용되는 장치로 구분된다.일반적으로 사람이 다루는 장치는 데이터 전송률이 낮고, 장치들 사이의 입출력을 담당하는 장치는 데이터 전송률이 높다. 바이트 단위로 데이터를 주고받는 장치를 문자형 장치, 블럭 단위로 데이터를 주고받는 장치를 블럭 장치라고 부른다. 입출력 장치의 종류는 다양한데.. 운영체제는 모든 장치를 지원해야 한다. 하드디스크에서는 금속 판에 정보가 저장된다. Disk Arm은 금속 판의 중앙부터 가장자리로 이동하며 정보를 읽고, 모터를 통해 움직인다. 디스크 하단에는 컨트롤러 보드가 있고, 컨트롤러 보드에는 여러 레지스터들이 부착되어있다. 운영체제가 장치에 명령을 내리면 ..
[Operating System] File System

[Operating System] File System

2025.05.10
파일은 보조 기억 장치에 저장되고 전원이 끊기더라도 지워지지 않는 정보의 저장 단위를 의미한다.사용자가 파일을 만들면 운영체제는 그 정보를 저장하는 자료구조를 운영체제 내부에 만들어 파일과 함께 저장한다. 이 자료구조는 파일을 사용하지 않을 때는 보조 기억 장치에 있다가 파일을 사용할 때는 메모리에 올라온다. 이 자료구조를 File Control Block이라고 부른다.이 자료구조는 파일명, 만들어진 시기, 권한을 가진 사람 등 여러 정보를 포함한다. 프로세스가 만들어질 때 함께 생성되는 PCB와 유사하지만.. PCB는 메인 메모리에서 관리되고 FCB는 보조 기억 장치에 저장된다. 사용자가 파일에 접근하려 할 때, 운영체제는 해당 파일이 존재하는지 확인하고 디스크의 어느 위치에 있는지 확인해야 한다..
[Operating System] Deadlock and Starvation

[Operating System] Deadlock and Starvation

2025.04.13
데드락은 두 개 이상의 프로세스가 절대 발생할 수 없는 이벤트를 무한정 기다리는 상황을 의미한다.    프로세스 P는 A자원을 가지고 있고, B자원을 운영체제에게 요청했다.프로세스 Q는 B자원을 가지고 있고, A자원을 운영체제에게 요청하는데... 운영체제는 현재 B자원이 사용할 수 없는 상태이기에 프로세스 A를 Block상태로 변경시키고, 프로세스 B도 같은 이유로 Block상태로 변경시킨다.    x축은 프로세스 P가 실행하는 시간을, y축은 프로세스 Q가 실행하는 시간을 의미한다.나머지 루트로 진행하는 경우 아무 문제가 발생하지 않는데.. 3번, 4번 루트로 실행되는 경우 데드락이 발생한다.  한 사람이 P와 Q 프로그램을 작성한다면 데드락이 발생하지 않는 방식으로 작성하겠지만.. P를 작성하는 사람..
[Operating System] Semaphore

[Operating System] Semaphore

2025.04.08
한 프로세스가 임계 구역에 접근할 때 CPU Interrupt를 비활성화하면 현재 실행 중인 코드가 중단되지 않아 Critical Section을 보호할 수 있다. 원래는 CPU는 명령어를 실행하고 Interrupt가 발생했는지 매번 확인하는데, Atomic Operation을 실행할 때는 Interrupt를 비활성화한다.이 때 Interrupt를 아예 무시하는건 아니고, Atomic Operation이 마무리 된 후에 그 동안 발생한 Interrpt를 수행하는 방식으로 동작해 처리를 뒤로 미룬다고 생각하자. 시스템 성능 저하 문제 때문..사용자 코드를 Atomic Operation으로 실행하는건 좋지 않지만, Entry Section을 Atomic Operation으로 다루는건 합리적이다. 운영체제는..
  • 최신
    • 1
    • 2
  • 다음

정보

시간의화살 블로그의 첫 페이지로 이동

시간의화살

  • 시간의화살의 첫 페이지로 이동

검색

방문자

  • 전체 방문자
  • 오늘
  • 어제

카테고리

  • 분류 전체보기 (607)
    • Algorithm (205)
      • Data Structure (5)
      • Theory && Tip (33)
      • Baekjoon (166)
      • ALGOSPOT (1)
    • Spring (123)
      • Spring (28)
      • Spring Web MVC (20)
      • Spring Database (14)
      • Spring Boot (6)
      • Spring 3.1 (11)
      • Spring Batch (6)
      • Spring Security (16)
      • JPA (12)
      • Spring Data JPA (5)
      • QueryDSL (4)
      • eGovFramework (1)
    • Programming Language (74)
      • Java (19)
      • JavaScript (15)
      • C (25)
      • C++ (12)
      • Python (1)
      • PHP (2)
    • Computer Science (69)
      • Operating System (18)
      • Computer Network (17)
      • System Programming (22)
      • Universial Programming Lang.. (8)
      • Computer Architecture (4)
    • Database (21)
      • Database (7)
      • MySQL (3)
      • Oracle (3)
      • Redis (5)
      • Elasticsearch (3)
    • DevOps (20)
      • Docker && Kubernetes (8)
      • Jenkins (4)
      • Github Actions (0)
      • Amazon Web Service (8)
    • Machine Learning (28)
      • AI Introduction (28)
    • Mobile (28)
      • Android (21)
      • Flutter (7)
    • Solutions (14)
    • Life Logs (0)
    • 낙서장 (25)

최근 글

나의 외부 링크

메뉴

  • 홈

정보

13months의 시간의화살

시간의화살

13months

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © 13months.

티스토리툴바