이 질문을 이해하기 위해 논리주소, 물리주소, 가상 메모리와 페이징 개념을 먼저 알아보자 !물리 주소와 논리 주소물리 주소: 메모리 하드웨어 상의 실제 주소논리 주소: 프로세스마다 부여되는 0번지부터 시작하는 가상의 주소CPU와 프로세스는 직접 물리 주소를 사용하는 것이 아니라 논리 주소를 사용한다. 따라서 여러 프로세스가 동일한 논리 주소를 가질 수 있지만, 물리 주소는 고유하다. 하지만 논리 주소라 할지라도 실제로 정보가 저장되어 있는 하드웨어 상의 메모리와 상호작용하기 위해서는 반드시 논리 주소와 물리 주소간의 변환이 이루어져야 한다. 메모리 관리 장치(MMU) CPU와 메모리 사이에 위치한다.CPU가 사용하는 논리 주소를 실제 메모리의 물리 주소로 변환한다.➡️ CPU는 논리 주소만 다루고, 실..
CPU 스케줄링 : 운영체제가 여러 프로세스 중 어떤 프로세스에 CPU를 언제, 얼마나 할당할지 결정하는 방식 ,운영체제의 CPU배분 방법CPU 스케줄링 알고리즘 : CPU 스케줄링 절차를 말한다. CPU 스케줄러 : CPU 스케줄링 알고리즘을 결정하고 수행하는 운영체제의 구성 요소 📌 프로세스 우선순위운영체제는 각 프로세스의 우선순위를 판단해 PCB에 저장우선순위가 높을수록 CPU를 더 빨리, 더 많이 할당사용자가 직접 우선순위를 설정할 수도 있음 (ps 명령어 등 활용 가능)✅ 우선순위 결정 요소CPU 활용률을 기준으로 판단입출력(I/O) 중심 프로세스에 더 높은 우선순위를 부여운영체제는 어떤 프로세스에 높고 낮은 우선순위를 할당할까첫번째 고려 요소는 CPU활용률이다. 운영체제는 CPU활용률을 높..
📌 임계 구역(Critical Section)임계 구역은 둘 이상의 프로세스나 스레드가 동시에 접근하면 문제가 발생할 수 있는 공유 자원에 접근하는 코드 영역이다. 즉, 동시에 실행되는 프로세스나 스레드가 동시에 임계구역에 진입하여 실행되면 문제가 발생할 수 있다. 프로세스 A가 공유 메모리를 쓰고, 프로세스 B가 같은 메모리를 동시에 읽으려는 경우, 아직 쓰기가 완료되지 않았기 때문에 잘못된 값을 읽을 수 있음 → 문제 발생즉, 프로세스A의 공유메모리 공간에 데이터를 쓰는 코드와 프로세스 B의 공유 메모리 공간을 읽는 코드는 임계 구역이 된다. ➡️ 첫번째 경우문제가 되지 않지만 순서가 바뀔 경우 문제가 되는 구간이기 때문에 이 구간(코드를) 임계 구역이라고 한다. 이러한 것처럼 동시에 실행되는 프..
📌 프로세스의 유형포그라운드 프로세스사용자와 직접 상호작용하며 실행되는 프로세스. 예: 웹 브라우저, 터미널 등.백그라운드 프로세스사용자와의 직접적인 상호작용 없이 백그라운드에서 동작하는 프로세스.데몬(Daemon)백그라운드 프로세스 중에서도 사용자 개입 없이 특정 작업만 수행하는 특수한 프로세스.→ Windows OS에서는 이를 ‘서비스’라고 부른다.프로세스가 실행되면 메모리는 다음과 같이 구성된다:커널 영역:프로세스 제어 블록(PCB, Process Control Block) 저장.사용자 영역(코데힙스)코드 영역: 실행 명령어 저장 (Read-Only)데이터 영역: 프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간이다. 전역 변수, 정적 변수 등 (정적 할당)힙 영역: 실행 중 동적으로 할당되..
📌 운영체제운영체제는 컴퓨터 하드웨어와 응용 프로그램 사이의 중개자 역할을 하며, 시스템 자원을 효율적으로 관리하고 사용자에게 편리한 인터페이스를 제공하는 소프트웨어이다. 운영체제는 인터페이스, 시스템콜, 커널, 드라이버 4가지로 이루어져있다. 그중에서도 크게 인터페이스와 커널로 구분할 수 있다. EX )Window, MAC OS, Unix, Linux, Android, iOS커널 프로세스 관리, 메모리 관리, 저장 장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것이다.그래서 운영체제의 성능은 커널이 좌우하게 된다.인터페이스사용자와 응용프로그램에 인접하여 커널에 명령을 전달하고 실행 결과를 사용자와 응용프로그램에 돌려주는 역할을 한다.📌 운영체제의 역할운영체제는 효율성, 안정성, 확장성, 편리..
시스템 메모리 증가더 많은 데이터가 캐시되면서 디스크의 사용은 대체적으로 쓰기 위주가 되었고 읽기는 캐시에서 처리되었다.임의 I/O와 순차 I/O의 성능 간의 격차탐색과 회전 지연 비용은 매우 천천히 감소하고 있다.워크로드에서 기존 파일 시스템들의 성능이 좋지 않았다.예를 들어, 파일 시스템은 크기가 하나의 블록인 새 파일을 생성하기 위해 많은 수의 작업을 수행한다.LFS 로그기반 파일 시스템모든 갱신을 디스크에 순차적으로 기록하는 것이 핵심디스크 기록시, LFS는 모든 갱신 정보(메타데이터 포함)를 세그멘트에 버퍼링한다.세그먼트가 가득차면, 디스크에서 빈 공간을 찾아 한번에 기록한다. LFS는 기존의 내용을 덮어 쓰지 않는다. 대신 항상 비어있는 곳에 세그먼트를 쓴다.디스크에 순차적으로 쓰기읽기동작의 ..
간단한 파일 시스템을 어떻게 구현해야할까?파일 시스템은 순수 소프트웨어이다.CPU 및 메모리 가상화와 달리, 파일 시스템의 어떤 측면을 개선하기 위해 하드웨어 기능을 추가하지 않는다.데이터 구조파일 시스템은 데이터를 구성하기 위해 어떤 종류의 on-disk 구조를 사용하나?접근 방법파일 시스템은 open(), read(), write() 등과 같은 프로세스가 호출한 함수를 자신의 구조에 어떻게 매핑할까?전체 구성vsfs 파일 시스템의 자료 구조에 대해 디스크 상의 전체적인 구성을 개발하자디스크를 block들로 나눈다. (단일 블럭 크기만 사용 가정, 4KB)Data Region : 사용자 데이터가 있는 디스크 공간, 디스크의 일정 부분을 데이터 영역으로 확보Meta Data : 각 파일에 대한 정보를 추..
어떻게 영속 장치를 관리하는가? API는 어떤 것이있고, 구현의 중요한 측면은 무엇인가.Abstractions for Storage‼️저장 장치의 가상화에 대한 두가지 주요 개념 개발File단순히 읽거나 쓸 수 있는 순차적인 바이트의 배열각 파일은 low-level의 이름을 갖고 있다. (inode number)운영체제는 파일의 구조를 모른다.(어떤 파일이 그림인지, 문서인지,,등)Directory(user-readable name, low-level name) 쌍으로 이루어진 목록을 가짐low-level의 이름을 갖고 있다. (inode number)File System InterfaceCreating files/directoriesAccessing files/directoriesRemoving fil..
System ArchitectureI/O DevicesInterface시스템 소프트웨어가 그 운영을 제어할 수 있도록 한다.모든 하드웨어 장치들은 특정한 상호 동작을 위한 인터페이스와 프로토콜을 가진다.Internal structure구현 세부 사항에 따라, 시스템에게 제공하는 장치에 대한 추상화를 정의하는 책임을 가진다.Protocol: 표준 방식while (STATUS == BUSY); // 장치가 바쁜 상태가 아닐 때까지 대기데이터를 Data 레지스터에 쓰기명령어를 COMMAND 레지스터에 쓰기(그러면 장치가 명령어를 실행한다.)while (STATUS == BUSY); // 요청을 처리하여 완료할 때까지 대기Polling운영체제가 데이터 레지스터에 어떤 데이터를 전달운영체제가 명령 레지스터에 명령..
비 교착 상태 오류원자성 위반 오류( atomicity violation )다수의 메모리 참조 연산들 간에 있어 예상했던 직렬성이 보장되지 않았다. 즉, 코드의 일부에 원자성이 요구되었으나, 실행 시에 그 원자성이 위반되었다.**[MySQL]**Thread 1:if (thd->proc_info) { ... fputs(thd->proc_info, ...); ...}Thread 2:thd->proc_info = NULL;thd 자료 구조의 proc_info필드를 두개의 다른 쓰레드가 접근한다.Thread 1: 값이 NULL인지 검사후 값을 출력Thread 2: 값을 NULL로 설정만약 스레드 1이 체크(즉, if)를 수행한 후 fputs()를 호출하기 전에 인터럽트가 걸리면, 스레드 2가 그 사이에 실행되어..