CS/운영체제 11

[운영체제] 페이지 교체 알고리즘

✔️ 페이지 교체 알고리즘이란? 페이징 기법으로 메모리를 관리하는 운영체제에서, 페이지 부재가 발생하여 새로운 페이지를 할당하기 위해 현재 할당된 페이지 중 어느 것과 교체할지를 결정하는 방법이다. 메모리는 한정되어 있기 때문에 스와핑이 많이 일어난다. 따라서 스와핑은 많이 일어나지 않도록 설계되어야 하며, 이는 페이지 교체 알고리즘을 기반으로 스와핑이 일어난다. 이 알고리즘이 사용되는 시기는 페이지 부재가 발생해 새로운 페이지를 적재 해야하나, 페이지를 적재할 공간이 없어 이미 적재되어 있는 페이지 중 교체할 페이지를 정할 때 사용된다. 빈 페이지가 없는 상황에서, 메모리에 적재된 페이지와 적재할 페이지를 교체함으로써 페이지 부재 문제를 해결할 수 있다. 페이지 교체 알고리즘은 '온라인 알고리즘'이다...

CS/운영체제 2023.02.05

[운영체제] 메모리 관리, 페이징 & 세그멘테이션

운영체제의 대표적인 할일 중 하나가 메모리 관리이다. (CPU 관리, 메모리 관리, I/O 장치 관리) 컴퓨터 내의 한정된 메모리를 극한으로 활용해야 하는 것이다. ※ 메모리란? 더보기 프로그램과 프로그램 수행에 필요한 데이터 및 코드를 저장하는 장치이다. 즉, 작업을 위해 사용되는 공간이다. 컴퓨터 메모리의 내용은 보조기억장치로 전송할 수 있는데, 이는 가상 메모리라 불리는 메모리 관리 기법을 통해 가능하다. ※ 운영체제의 역할 더보기 실행파일이 로더에 의해 메모리에 올라오고, 운영체제는 이 실행 파일을 메모리에 어느 부분에 올릴지 결정한다. ※ 자바는 OS 메모리 영역에 직접적으로 접근하지 않고, JVM이라는 가상 머신을 이용해서 간접적으로 접근한다. ✔️ 메모리 관리가 필요한 이유는? 프로그램의 실..

CS/운영체제 2023.02.04

[운영체제] 메모리 계층 구조

✔️ 메모리 계층 구조(Memory Hierachy)란? 메모리 계층은 레지스터, 캐시(L1, L2), 메모리(주기억장치), 하드디스크(보조기억장치)로 구성되어 있다. 명칭 위치 접근 속도 레지스터 CPU 내부 빠름 (휘발) 캐시(L1, L2 캐시) CPU 내부 빠름 (휘발) 메모리(RAM) CPU 외부 레지스터와 캐시보다 느림 (휘발) 하드디스크(HDD, SDD) CPU 직접 접근 불가 데이터를 메모리로 이동시켜 접근 가능 (비휘발) 램은 하드디스크로부터 일정량의 데이터를 복사해서 임시 저장하고, 이를 필요 시마다 CPU에 빠르게 전달한다. 이러한 계층이 있는 이유는, 경제성과 캐시 때문이다. ✔️ 캐시(Cache) 메모리 주기억장치에 저장된 내용의 일부를 임시로 저장해두는 기억 장치이다. CPU와 주..

CS/운영체제 2023.02.04

[운영체제] 세마포어(Semaphore) & 뮤텍스(Mutex)

✔️ 들어가기 전... 뮤텍스와 세마포어를 알아보기 전, 임계구역(Critical Section)에 대해 먼저 정리하자. 💡 임계구역(Critical Section)이란? 여러 프로그램 혹은 쓰레드가 작업을 수행하면서 공유된 자원을 건드리게 될 수 있는데, 이때 프로그램 코드 상에서 공유 자원에 접근하는 부분을 임계구역이라고 한다. 이렇게 임계 구역에 여러 프로세스 및 스레드가 함부로 접근할 수 없도록 데이터를 한 번에 하나의 프로세스만 접근할 수 있도록 제한을 두는 동기화 방식을 취해야 한다. 동기화 도구에는 대표적으로 세마포어(Semaphore)와 뮤텍스(Mutex)가 있다. 🔒 이들은 모두 공유된 자원의 데이터를 여러 스레드/프로세스가 접근하는 것을 막는 역할을 한다. 세마포어는 일반화된 뮤텍스이다..

CS/운영체제 2023.02.03

[운영체제] 동기화(Synchronization)와 경쟁상태(Race Condition), 임계영역(Critical Section)

✔️ 동기 (Synchronous)와 비동기(Asynchronous) 데이터 처리 방식 💡 동기 (Synchronous) 서버에서 요청을 보냈을 때, 응답이 돌아와야 다음 동작을 수행할 수 있다. 즉, A 작업이 모두 진행될 때까지 B 작업은 대기해야 한다. 간단하고 직관적임 어떠한 일을 처리하는 동안, 다른 일을 하지 못함 작업 완료 여부를 호출한 쪽에서 신경을 씀 💡 비동기 (Asynchronous) 동기와 반대로, 요청을 보냈을 때 응답 상태와 상관 없이 다음 동작을 수행할 수 있다. 즉, A 작업이 시작하면 동시에 B 작업도 실행된다. A 작업은 결과값이 나오는대로 출력된다. 동기보다 복잡함 어떠한 일을 처리하는 동안 다른 일을 할 수 있어 자원을 효율적으로 사용 가능함 작업 완료 여부를 호출된 ..

CS/운영체제 2023.02.02

[운영체제] 데드락 (DeadLock, 교착 상태)

✔️ 교착 상태 (DeadLock)란? 두 개 이상의 프로세스들이 서로가 가진 자원을 기다리며(wait) 중단된 상태이다. 즉, 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태이다. 💡 예를 들어, Resource 1(자원)을 가진 Process 1(프로세스)과 Resource 2를 가진 Process 2가 있다. 이때 Process1은 Resource2를 필요로 하고, Process2는 Resource1을 필요로 한다면 두 프로세스는 서로의 자원을 얻기 위해 무한정 기다리게 되는 것이다. ✔️ 주로 언제 발생할까? 멀티 프로그래밍 환경에서 한정된 자원을 얻기 위해 서로 경쟁하는 상황 발생 한 프로세스가 자원을 요청했을 때, 동시에 그..

CS/운영체제 2023.02.01

[운영체제] CPU 스케줄링 알고리즘

✔️ CPU 스케줄링이란? CPU를 잘 사용하기 위해 프로세스를 잘 배정하는 것이다. CPU 스케줄러는 CPU 스케줄링 알고리즘에 따라 프로세스에서 해야 하는 일을 스레드 단위로 CPU에 할당한다. 프로그램이 실행될 때는 CPU 스케줄링 알고리즘이 어떤 프로그램에 CPU 소유권을 줄 것인지 결정한다. ✔️ CPU 알고리즘의 조건과 목표 조건 오버헤드 ↓ 이용률 ↑ 기아 현상 ↓ 목표 가능하면 많은 일을 수행. 시간(time)보단 처리량(throughtout)이 중요 빠른 응답 시간. 적은 대기 시간. 기한(deadline) 맞추기 ✔️ 선점 / 비선점 스케줄링 선점(preemptive) 지금 사용하고 있는 프로세스를 알고리즘에 의해 중단시켜 버리고, 다른 프로세스에 CPU 소유권을 할당하는 방식 현대 운..

CS/운영체제 2023.02.01

[운영체제] PCB & Context Switching

PCB란? PCB(Process Control Block)는 CPU가 프로세스가 여러 개일 때, CPU 스케줄링을 통해 관리하는 것을 말한다. ❗ 이때, CPU는 각 프로세스들이 누군지 알아야 관리가 가능하다. → 프로세스들의 특징을 갖고있는 것이 바로 Process Metadata이다. ※ Metadata (메타데이터)란? : 데이터에 관한 구조화된 데이터로, 대량의 정보 가운데에서 확인하고자 하는 정보를 효율적으로 찾아내서 이용하기 위해 일정한 규칙에 따라 콘텐츠에 대해 부여되는 데이터이다. Process Metadata에는 다음과 같은 정보들이 있다. PCB에 담기는 프로세스 정보 PCB는 프로세스 스케줄링 상태, 프로세스 ID 등의 다음과 같은 정보들로 이루어져 있다. Process ID (PID..

CS/운영체제 2023.01.27

[운영체제] 시스템 콜(System Call)

들어가기 전 용어 정리 운영체제는 커널 모드(Kernel Mode)와 사용자 모드(User Mode)로 나뉘어 구동된다. - 사용자 모드(User Mode) : 유저가 접근할 수 있는 영역을 제한적으로 두며, 컴퓨터 자원에 함부로 침범하지 못하는 모드. - 커널 모드(Kernel Mode) : 모든 컴퓨터 자원에 접근할 수 있는 모드. - 커널 (Kernel) : 운영체제의 핵심 부분이자 시스템콜 인터페이스를 제공하며 보안, 메모리, 프로세스, 파일 시스템, I/O 디바이스, I/O 요청 관리 등 운영체제의 중추적인 역할을 한다. 즉, 파일 입출력, 프로세스 관리 등과 같이 운영체제의 기능을 담당 시스템 콜이 필요한 이유 일반 사용자(사용자 모드)는 커널에 접근할 수 없기 때문에 원칙적으로는 파일 입출력..

CS/운영체제 2023.01.26

[운영체제] 인터럽트(Interrupt)

주변장치와 입출력 장치는 CPU나 메모리와 달리 인터럽트라는 메커니즘을 통해 관리된다. 인터럽트란? 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우, 현재 실행 중인 작업을 즉시 중단하고, 발생된 상황을 처리한 후 다시 실행 중인 작업으로 복귀하는 것이다. 즉, 현재 실행 중인 프로그램을 중단하고, 다른 프로그램의 실행을 요구하는 명령어다. (※ 인터럽트 : 끼어들다) ※ 지금 수행 중인 일보다 더 중요한 일(ex. 입출력, 우선 순위 연산 등)이 발생하면, 그 일을 먼저 처리하고 나서 하던 일을 계속해야 한다. 그래서 인터럽트, 왜 하는 건가? 입출력 연산이 CPU 명령 수행속도보다 현저히 느리기 때문. 인터럽트의 종류 인터럽트의 종류는 외부 인터럽트, 내부 인터럽트, 소프트웨어 인터럽트로 ..

CS/운영체제 2023.01.26