728x90
반응형

Chapter14. 가상 메모리

학습목표

  • 스와핑이 무엇인지 이해합니다
  • 연속 메모리 할당 기법과 외부 단편화 문제를 이해합니다
  • 가상 메모리 관리 기법인 페이징의 개념과 작동을 이해합니다
  • 요구 페이징의 개념과 페이지 교체 알고리즘을 이해합니다
  • 스래싱과 그를 해결하기 위한 프레임 할당을 이해합니다

스와핑

  • 현재 실행되지 않은 프로세스들을 임시로 보조기억장치 일부 영역으로 쫓아내고, 그렇게 해서 생긴 메모리상의 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식
  • 스왑 영역: 프로세스들이 쫓겨나는 보조기억장치의 일부영역
  • 스왑 아웃: 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것
  • 스왑 인: 반대로 스왑 영역에서 메모리로 오는 것

메모리 할당

  • 최초 적합: 프로세스가 적재될 수 있는 공간을 발견하는 즉시 메모리를 할당하는 방식
  • 최적 적합: 프로세스가 적재될 수 있는 공간 중 가장 작은 공간에 배치하는 방식
  • 최악 적합: 프로세스가 적재될 수 있는 공간 중 가장 큰 공간에 배치하는 방식

외부 단편화

  • 프로세스를 할당하기 어려울 만큼 작은 메모리 공간들로 인해 메모리가 낭비되는 현상

페이징

  • 메모리의 물리 주소 공간을 프레임 단위로 자르고, 프로세스의 논리 주소 공간을 페이지 단위로 자른 뒤 페이지를 프레임에 할당하는 가상 메모리 관리 기법
  • 페이징 시스템에서의 스왑 아웃은 페이지아웃, 스왑 인은 페이지 인이라고 부름
  • 페이지 테이블: 페이지의 번호를 이용해 페이지가 적재된 프레임을 찾을 수 있음

요구 페이징

  • 프로세스를 메모리에 적재할 때 처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법

순수 페이징 기법

  • 프로그램이 실행되기 전에 모든 페이지를 메모리에 미리 로드하지 않고, 필요한 페이지만 요청 시 메모리에 로드합니다. 쉽게 말해, 필요한 순간에만 필요한 데이터를 가져오는 방식

페이지 교체 알고리즘

  • 새로운 페이지를 메모리에 로드할 때 어떤 페이지를 제거할지 결정하는 방법
  1. FIFO (First-In, First-Out)
    • 설명: 가장 먼저 들어온 페이지를 가장 먼저 제거하는 방식입니다.
    • 장점: 단순하고 구현이 쉬움.
    • 단점: 오래된 페이지가 반드시 덜 사용된 것은 아니므로 비효율적일 수 있음.
  2. LRU (Least Recently Used)
    • 설명: 가장 오랫동안 사용되지 않은 페이지를 제거하는 방식입니다.
    • 장점: 자주 사용되는 페이지를 유지하여 성능 향상.
    • 단점: 구현이 복잡할 수 있음.
  3. LFU (Least Frequently Used)
    • 설명: 사용 빈도가 가장 적은 페이지를 제거하는 방식입니다.
    • 장점: 자주 사용되지 않는 페이지를 제거하여 효율적.
    • 단점: 사용 빈도 계산이 복잡할 수 있음.
  4. OPT (Optimal)
    • 설명: 미래에 가장 늦게 사용할 페이지를 제거하는 이상적인 방식입니다.
    • 장점: 가장 효율적인 방법.
    • 단점: 미래 예측이 불가능하므로 실제 구현이 어려움.

스래싱

  • 프로세스가 실제 실행되는 시간보다 페이징에 더 많은 시간을 소요하여 성능이 저하되는 문제

스레싱을 해결하기 위한 프레임 할당 방식

  1. 고정 할당 방식:
    • 설명: 각 프로세스에 고정된 수의 프레임을 할당하는 방식입니다.
    • 장점: 예측 가능한 메모리 사용, 간단한 구현.
    • 단점: 비효율적인 메모리 사용 가능성.
  2. 가변 할당 방식:
    • 설명: 프로세스의 필요에 따라 동적으로 프레임을 할당하는 방식입니다.
    • 장점: 메모리 활용도 극대화, 유연성 증가.
    • 단점: 복잡한 관리, 예측 어려움.
  3. 워킹 셋(Working Set) 모델:
    • 설명: 프로세스가 일정 기간 동안 자주 참조하는 페이지 집합을 기준으로 프레임을 할당하는 방식입니다.
    • 장점: 효율적인 메모리 사용, 스레싱 방지.
    • 단점: 매개변수 설정 복잡.
  4. 페이지 폴트 빈도(Page Fault Frequency) 모델:
    • 설명: 페이지 폴트 발생 빈도를 기준으로 프로세스의 프레임 수를 조절하는 방식입니다.
    • 장점: 스레싱 방지, 동적 조절.
    • 단점: 정확한 페이지 폴트 빈도 측정 필요.
728x90
반응형

'코딩공부 > 운영체제' 카테고리의 다른 글

Chapter15. 파일 시스템  (1) 2024.10.25
Chapter13. 교착 상태(데드락)  (0) 2024.10.24
Chapter12. 프로세스 동기화  (0) 2024.10.24
Chapter10. 프로세스와 스레드  (2) 2024.10.24
Chapter09. 운영체제 시작하기  (0) 2024.10.24
728x90
반응형

Chapter13. 교착 상태(데드락)

학습목표

  • 교착 상태가 무엇인지 이해합니다
  • 교착 상태는 어떤 상황에서 발생하는지 이해합니다
  • 교착 상태를 예방하고, 회피하고, 검출하는 방법을 학습합니다

**교착 상태(Deadlock)**란?

  • 여러 프로세스나 스레드가 서로 자원을 기다리며 무한정 대기 상태에 빠져 작업을 진행하지 못하는 상황

발생 상황

  • 상호 배제 상황일 때
  • 자원을 점유하고 대기할 때
  • 자원을 비선점 상태일때
  • 자원을 해제하지 않고 무한 대기할 때

예방 방법

  • 자원 할당 전에 모든 자원을 확보
  • 요청 순서를 정해 자원 할당

회피 방법

  • 자원 상태를 모니터링해 교착 상태가 발생하지 않도록 조정
  • 은행원 알고리즘을 사용

검출 방법

  • 시스템의 자원 그래프를 사용해 교착 상태를 검사
  • 주기적으로 검사하여 교착 상태를 해결
728x90
반응형

'코딩공부 > 운영체제' 카테고리의 다른 글

Chapter15. 파일 시스템  (1) 2024.10.25
Chapter14. 가상 메모리  (1) 2024.10.25
Chapter12. 프로세스 동기화  (0) 2024.10.24
Chapter10. 프로세스와 스레드  (2) 2024.10.24
Chapter09. 운영체제 시작하기  (0) 2024.10.24
728x90
반응형

Chapter12. 프로세스 동기화

학습목표

  • 동기화란 무엇인지 알아봅니다
  • 공유 자원과 임계 구역 문제를 이해합니다
  • 임계 구역 문제를 해결하기 위한 동기화 기법을 학습합니다

동기화의 의미

  • 프로세스 동기화: 프로세스들 사이의 수행 시기를 맞추는 것
    • 실행 순서 제어: 프로세스를 올바른 순서대로 실행하기
    • 상호 배제: 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기
  • 즉, 동기화에는 실행 순서 제어를 위한 동기화가 있고, 상호 배제를 위한 동기화가 있다

공유자원과 임계 구역

  • 공유 자원: 프로세스들이 사용하는 공동의 자원
    • 동시에 실행하면 문제 발생
  • 임계 구역: 동시에 실행하면 문제가 발생하는 자원에 접근하는 코드 영역
  • 운영체제는 임계 구역 문제를 아래 세 가지 원칙 하에 해결함
    • 상호배제
    • 진행
    • 유한 대기

동기화 기법

  1. 뮤텍스 락 (Mutex Lock):
    • 설명: 상호 배제를 통해 한 번에 하나의 스레드만 리소스에 접근할 수 있도록 하는 락.
    • 용도: 한 스레드가 작업을 끝낼 때까지 다른 스레드가 접근하지 못하게 막음.
    • 장점: 단순하고 직관적.
    • 단점: 데드락 발생 가능성.
  2. 세마포 (Semaphore):
    • 설명: 카운터를 이용해 특정 수의 스레드가 동시에 리소스에 접근할 수 있도록 하는 동기화 도구.
    • 용도: 리소스 접근 제한, 큐 크기 조절 등.
    • 장점: 다수의 스레드 동시 접근 허용.
    • 단점: 관리 복잡도 증가.
  3. 모니터 (Monitor):
    • 설명: 락과 조건 변수를 포함한 고수준의 동기화 매커니즘.
    • 용도: 객체의 상태를 보호하고, 조건에 따라 스레드 실행을 제어.
    • 장점: 코드가 더 간결하고 유지보수 쉬움.
    • 단점: 구현 복잡.
728x90
반응형

'코딩공부 > 운영체제' 카테고리의 다른 글

Chapter15. 파일 시스템  (1) 2024.10.25
Chapter14. 가상 메모리  (1) 2024.10.25
Chapter13. 교착 상태(데드락)  (0) 2024.10.24
Chapter10. 프로세스와 스레드  (2) 2024.10.24
Chapter09. 운영체제 시작하기  (0) 2024.10.24
728x90
반응형

Chapter10. 프로세스와 스레드

학습목표

  • 프로세스 제어 블록이란 무엇인지 이해합니다
  • 문맥 교환의 정의와 과정을 학습합니다
  • 프로세스는 메모리에 어떻게 배치되는지 학습합니다
  • 프로세스 상태와 프로세스 계층 구조를 학습합니다
  • 스레드의 개념을 이해하고, 멀티프로세스와 멀티스레드의 차이를 이해합니다

프로세스 제어 블록

  • 운영체제는 빠르게 번갈아 수행되는 프로세스의 실행 순서를 관리하고, 프로세스에 CPU를 비롯한 자원을 할당함.
  • 이를 위해 운영체제는 프로세스 제어블록(PCB)를 이용
  • 프로세스 제어 블록**(PCB)**은 프로세스와 관련된 정보를 저장하는 자료 구조
  • 마치 상품에 달린 태그와 같음
  • PCB는 커널 영역에서 생성됨
  • 새로운 프로세스를 생성했다 → 운영체제가 PCB를 생성했다

문맥 교환

  • 운영체제는 빠르게 프로세스의 실행순서를 관리함
  • 프로세스 A에서 B로 바꿀때 A의 실행정보를 백업해야함
  • 이러한 중간 정보, 즉 하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보를 **‘문맥’**이라 함
  • 기존 프로세스의 문맥을 PCB에 백업하고, 새로운 프로세스를 실행하기 위해 문맥을 PCB로부터 복구하여 새로운 프로세스를 실행하는 것을 **‘문맥 교환’**이라고 함
  • 문맥 교환은 여러 프로세스가 끊임없이 빠르게 번갈아 실행되는 원리임

프로세스의 메모리 영역

  • 프로세스가 생성되면 커널 영역에 PCB가 생성됨
  • 사용자 영역에는 코드 영역, 데이터 영역, 힙 영역, 스택 영역으로 나뉘어 저장됨
  • 정적 할당 영역 (크기가 고정된 영역)
    • 코드 영역: 텍스트 영역이라 불림. 실행할 수 있는 코드, 즉 기계어로 이루어진 명령어가 저장 됨
      • CPU가 실행할 명령어가 담겨 있기 때문에, 읽기 전용 공간
    • 데이터 영역: 프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간
      • 대표적으로 전역 변수(프로그램이 실행되는 동안 유지되며, 프로그램 전체에서 접근 가능한 변수)
  • 동적 할당 영역
    • 힙 영역
      • 프로그램을 만드는 사용자, 즉 프로그래머가 직접 할당할 수 있는 저장 공간
      • 메모리 공간을 할당 했다면 언젠간 반납해야 함
      • 반납하지 않는다면 메모리 누수 발생
    • 스택 영역
      • 데이터를 일시적으로 저장하는 공간
        • 매개변수, 지역변수

프로세스 상태

  • 프로세스는 생성, 준비, 실행, 대기, 종료 상태를 거치며 실행됩니다

스레드

  • 스레드란 프로세스를 구성하는 실행의 흐름 단위

[비교] 멀티프로세스와 멀티스레드

https://pyoja.tistory.com/303

728x90
반응형

'코딩공부 > 운영체제' 카테고리의 다른 글

Chapter15. 파일 시스템  (1) 2024.10.25
Chapter14. 가상 메모리  (1) 2024.10.25
Chapter13. 교착 상태(데드락)  (0) 2024.10.24
Chapter12. 프로세스 동기화  (0) 2024.10.24
Chapter09. 운영체제 시작하기  (0) 2024.10.24
728x90
반응형

Chapter09. 운영체제 시작하기

학습목표

  • 운영체제가 무엇인지 이해합니다
  • 커널이 무엇인지 학습합니다
  • 시스템 호출과 이중 모드에 대해 이해합니다
  • 운영체제가 제공하는 핵심 서비스의 종류를 학습합니다

운영체제란

  • 프로그램 실행에 필요한 자원을 시스템 자원 혹은 자원이라 함
  • 실행할 프로그램에 필요한 자원을 할당하고, 프로그램 실행을 돕는 프로그램이 운영체제
  • 커널 영역과 사용자 영역으로 나누어짐
  • 운영체제는 커널 영역에 적재되는 프로그램
  • 실행하는 프로그램의 메모리 영역을 적재적소에 할당하는 것은 운영체제의 역활

운영체제의 심장, 커널

  • 커널: 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능 담당
  • 이중모드: CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 분리하는 방식
    • CPU는 명령어를 사용자 모드 또는 커널 모드로써 사용할 수 있음
    • 사용자 모드: 운영체제 서비스를 제공받을 수 없는 실행 모드 (커널X)
    • 커널 모드: 운영체제 서비스를 제공받을 수 있는 실행 모드 (커널O)
    • 시스템 호출: 운영체제 서비스를 제공받기 위해 커널 모드로 전환하는 방법

운영체제의 핵심 서비스

  • 프로세스 관리
    • 실행중인 프로그램을 프로세스라고 함
  • 자원 접근 및 할당
  • 파일시스템 관리
728x90
반응형

'코딩공부 > 운영체제' 카테고리의 다른 글

Chapter15. 파일 시스템  (1) 2024.10.25
Chapter14. 가상 메모리  (1) 2024.10.25
Chapter13. 교착 상태(데드락)  (0) 2024.10.24
Chapter12. 프로세스 동기화  (0) 2024.10.24
Chapter10. 프로세스와 스레드  (2) 2024.10.24
728x90
반응형

Chapter08. 입출력장치

장치컨트롤러

  • 입출력 장치는 앞서 말한 CPU, 메모리보다 다루기가 더 어려움
  • 첫째, 입출력장비에는 종류가 너무 많다
  • 둘째, CPU와 메모리의 데이터 전송률은 높지만 입출력장치의 데이터 전송률은 낮다 → 컴퓨터에 직접 연결되지 않고 ‘장치 컨트롤러’라는 하드웨어를 통해 연결 됨
  • 장치 컨트롤러의 역활
    • CPU와 입출력장치 간의 통신중개
    • 오류 검출
    • 데이터 버퍼링 (CPU의 높은 전송률과 입출력장치의 낮은 전송률 차이를 완화)
  • 장치드라이버: 장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터 내부와 정보를 주고 받을 수 있게 하는 프로그램
  • 프로그램 입출력: 프로그램 속 명령어로 입출력 작업을 하는 방식
  • 메모리 맵 입출력: 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 입출력 방식
  • 고립형 입출력: 메모리에 접근하기 위한 주소 공간과 입출력 장치에 접근하기 위한 주소 공간을 별도로 분리하는 입출력 방식
  • 입출력 버스는 입출력 장치와 컴퓨터 내부를 연결 짓는 통로
728x90
반응형

'코딩공부 > 컴퓨터구조' 카테고리의 다른 글

Chapter07. 보조기억장치  (0) 2024.10.24
Chapter06. 메모리와 캐시 메모리  (0) 2024.10.24
Chapter05. CPU 성능 향상 기법  (0) 2024.10.24
Chapter04. CPU의 작동 원리  (0) 2024.10.24
Chapter03. 명령어  (2) 2024.10.24
728x90
반응형

Chapter07. 보조기억장치

  • 하드디스크: 자기적인 방식으로 데이터를 저장하는 보조기억장치
  • 플래시메모리: 전기적으로 데이터를 읽고 쓸 수 있는 저장 장치
  • RAID: 하드디스크와 SSD를 사용하는 기술로 데이터의 안정성 또는 높은 성능을 위해 여러 개의 보조기억장치를 마치 하나의 논리적 보조기억장치처럼 사용하는 기술

RAID 0:

  • 방식: 데이터 스트라이핑 (Striping)
  • 장점: 빠른 속도
  • 단점: 데이터 보호 없음

RAID 1:

  • 방식: 데이터 미러링 (Mirroring)
  • 장점: 높은 데이터 보호
  • 단점: 스토리지 용량 비효율

RAID 4:

  • 방식: 전용 패리티 디스크 (Dedicated Parity Disk)
  • 장점: 읽기 속도 빠름, 일부 보호
  • 단점: 패리티 디스크가 병목

RAID 5:

  • 방식: 분산 패리티 (Distributed Parity)
  • 장점: 균형 잡힌 속도와 보호
  • 단점: 쓰기 성능 저하

RAID 6:

  • 방식: 이중 패리티 (Double Parity)
  • 장점: 높은 데이터 보호
  • 단점: 쓰기 속도 저하
728x90
반응형

'코딩공부 > 컴퓨터구조' 카테고리의 다른 글

Chapter08. 입출력장치  (0) 2024.10.24
Chapter06. 메모리와 캐시 메모리  (0) 2024.10.24
Chapter05. CPU 성능 향상 기법  (0) 2024.10.24
Chapter04. CPU의 작동 원리  (0) 2024.10.24
Chapter03. 명령어  (2) 2024.10.24
728x90
반응형

SNMP(Simple Network Management Protocol)에 대해 쉽게 설명해드리겠습니다.

1. SNMP의 개념
- 쉽게 말해서 네트워크 장비들의 "건강 상태"를 확인하고 관리하는 통신 방식입니다.
- 마치 병원에서 의사가 환자의 체온, 혈압, 심박수 등을 체크하듯이, SNMP는 네트워크 장비들의 상태를 모니터링합니다.

2. 비슷한 프로토콜들과 비교
- MODBUS: 주로 산업용 장비들의 제어와 모니터링에 사용
- MQTT: IoT 기기들의 데이터 전송에 특화
- HTTP: 웹 통신에 사용
→ SNMP는 이들 중에서도 특별히 네트워크 관리에 특화되어 있습니다.

3. 사용 시기와 용도
예시 상황:
```
회사에 100대의 컴퓨터, 10대의 프린터, 5대의 네트워크 스위치가 있다고 가정해봅시다.
- 어떤 컴퓨터의 CPU 사용량이 비정상적으로 높은지
- 프린터의 잉크가 부족한지
- 네트워크 스위치의 트래픽이 얼마나 되는지
이런 정보들을 한 곳에서 모두 모니터링하고 싶을 때 SNMP를 사용합니다.
```

4. 통신 방식
- SNMP는 이더넷(TCP/IP) 기반의 통신입니다.
- 시리얼 통신이 아닌, 네트워크를 통해 데이터를 주고받습니다.
- UDP 포트 161, 162번을 주로 사용합니다.

5. SNMP를 주로 사용하는 장비들
- 네트워크 스위치, 라우터
- 서버, UPS(무정전전원장치)
- 네트워크 프린터
- 네트워크 카메라
- 온습도 센서(네트워크 타입)

6. SNMP의 작동 방식
```
[관리자(매니저)] <----> [관리대상(에이전트)]
예시:
관리자: "너의 CPU 온도가 어떻게 되니?" (GET 요청)
에이전트: "현재 65도입니다." (Response)
에이전트: "CPU 온도가 90도를 넘었어요!" (TRAP 메시지)
```

7. 실제 사용 예시
```
회사 전산실 상황:
- 서버실 온도가 갑자기 28도로 올라감
- SNMP를 통해 모니터링 중이던 시스템이 경고 알림을 보냄
- 관리자가 즉시 확인하여 에어컨 고장을 발견
- 신속한 대응으로 서버 장애 예방
```

8. SNMP의 장점
- 거의 모든 네트워크 장비가 지원
- 설정이 비교적 간단함
- 통합 관리가 가능
- 문제 발생 시 빠른 대응 가능

9. SNMP vs MODBUS
```
SNMP
- 주로 네트워크 장비 관리
- 이더넷 통신
- 모니터링에 특화

MODBUS
- 주로 산업용 장비 제어
- 시리얼/이더넷 통신 모두 가능
- 제어와 모니터링 모두 가능
```

이해하기 쉽게 비유하자면:
- SNMP는 마치 병원의 환자 모니터링 시스템과 같습니다.
- 여러 환자(장비)의 상태를 한 눈에 파악할 수 있고
- 문제가 생기면 즉시 알람이 울리며
- 의사(관리자)가 빠르게 대응할 수 있습니다.

728x90
반응형

'일기 > 개발일기' 카테고리의 다른 글

MIB Browser를 통한 SNMP 통신  (1) 2024.10.25
SNMP Trap과 Polling  (1) 2024.10.25
[241022] Modbus RTU vs Modbus TCP/IP  (1) 2024.10.22
[241021] FMS와 스위치  (1) 2024.10.21
[241016] Modbus RTU 통신 프로토콜 - 해석방법  (1) 2024.10.16

+ Recent posts