CS 45

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

✔️ 메모리 계층 구조(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

[Java] JVM과 Garbage Collection 동작 원리

이번 포스팅은 JVM 동작 원리와 GC 동작원리에 관한 내용이다. JVM과 GC 동작원리 역시 근본 중의 근본인 내용이지만, 이제야 정리한다. 먼저 들어가기 전... ✔️ JVM, JRE, JDK 정리 JVM (Java Virtual Machine) 자바 프로그램이 어느 기기, 어느 운영체제에서도 실행될 수 있게 만들어준다. 자바 프로그램의 메모리를 효율적으로 관리 & 최적화 해준다. JRE (Java Runtime Environment) JVM이 원활하게 잘 작동될 수 있도록 환경을 맞춰주는 역할을 한다. (JRE에 클래스 로더도 포함됨) JDK (Java Development Kit) JDK 에는 JRE에 없는 자바 컴파일러를 포함하고 있다. 자바로 개발을 하고 싶다면, 설치해야 한다. ✔️ JVM ..

CS/Java (CS) 2023.01.29

[운영체제] 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

[운영체제] 프로세스 & 스레드, 멀티 프로세스 & 멀티 스레드

운영체제란? 운영체제는 컴퓨터 하드웨어가 컴퓨터 소프트웨어와 통신하고 작동하도록 하는 소프트웨어 프로그램이다. 운영체제의 주목적은 무엇인가? 운영체제에는 두 가지 주요 목적이 있다. 컴퓨터 시스템의 계산 활동을 관리하여 컴퓨터 시스템이 제대로 작동하도록 한다. 프로그램 개발 및 실행을 위한 환경을 제공한다. 프로세스와 스레드의 차이 (Process vs Thread) ※ 참고 : 메모리 영역 코드(Code) 영역 : 프로그램 소스 코드를 저장 (프로그램 명령) 데이터(Data) 영역 : 전역변수, 정적변수, 배열 등 스택(Stack) 영역 : 지역변수, 매개변수, 리턴 값 (임시 메모리 영역) 힙(Heap) 영역 : 동적 할당 시 사용 (new(), malloc() 등) ✔️ 프로그램이 CPU에 의해 실..

CS/운영체제 2023.01.25