728x90

15.1 Linux

15.1.1 리눅스의 개요

  • 1991년 리누스 토발즈가 MINIX에 기반하여 실제로 사용할 수 이쓴ㄴ 운영체제 발표
  • 개발자뿐 아니라 일반인 및 기업용으로 사용 가능한 운영체제
  • 인텔 CPU뿐 아니라 ARM 등 다양한 CPU를 지원하며, 실습용 컴퓨터부터 슈퍼컴퓨터까지 널리 사용됨

15.1.2 리눅스의 장단점

  • 장점
    • 무료로 사용 가능
    • 유닉스 표준인 POSIX를 거의 모두 준수함
    • 높은 안정성
    • 낮은 성능의 하드웨어에서 동작 가능
    • 개인용 컴퓨터에서 서버 기능 수행 가능
  • 단점
    • 교육, 유지보수 문제
    • 보안 문제가 상대적으로 심각할 수 있음
    • 떨어지는 보급률
    • 특정 하드웨가 지원되지 않을 수 있으나 최근에 좋아지고 있음

15.1.3 리눅스 커널

  • MINIX와는 달리 일체형 커널 구조
    • 일체형 커널이지만 소스가 공개되어 있기 때문에 필요 없는 부분은 제거 가능
  • 멀티태스킹, 멀티유저 시스템
  • 멀티코어, 멀티프로세서 지원
  • 대부분 C언어로 작성되어 있어 다양한 하드웨어 지원이 쉬움
  • POSIX 표준 지원
  • 세마포어, 메시지 큐, 공유 메모리 등 프로세스 간 통신 지원
  • ext4, FAT, NTFS, HPFS 등 다양한 파일 시스템 지원
  • 필요한 서비스를 모듈로 만들어 커널을 교체하거나 시스템을 재시동하지 않고 기능 추가 가능
  • 주변장치를 파일로 인식하여 접근

15.1.4 임베디드 시스템과 실시간 시스템

  • 임베디드 시스템
    • 미리 정해진 특정한 기능을 수행하기 위해 하드웨어와 소프트웨어를 결합하여 설계된 컴퓨터 시스템
    • 보통 실시간 시스템에 이용됨
  • 실시간 시스템
    • 시스템의 상황과 무관하게 정해진 마감시간 내에 주어진 이벤트에 반응해야 함
    • 실시간 운영체제(RTOS)는 주어진 마감시간 내에 작업을 처리하는 데 중점을 둠
    • 경성 실시간 시스템
      • 시스템은 반드시 마감시간 내 작업을 완수해야 함
      • 예 : 항공기의 전자제어 시스템
    • 연성 실시간 시스템
      • 시스템이 마감시간 내 작업을 완수하면 좋지만, 그렇지 않더라도 목적달성에 실해한 것은 아님
      • 기준에 따라 어떤 작업을 완수할 것인가 결정해야 함
      • 예 : 멀티미디어 재생

        15.1.5 임베디드 리눅스

        • 임베디드 시스템을 위해 개발된 리눅스
        • 운영체제의 크기를 최소화하여 필요한 부분만 남김
    • 임베디드 시스템에 사용되는 마이크로프로세서는 범용 CPU와 기능 차이가 크기 때문에 성능이 최적화되어야 함
    • 리눅스는 원래 범용 컴퓨터 시스템을 위한 운영체제이기 떄문에 실시간 시스템의 요구사항에 대응할 수 있어야 함
      • 장점
      • 무료로 사용 가능하며, 운영체제를 응용에 적합게 수정 가능
    • 많은 사용자와 개발자로부터 검증받았으며, 많은 검증된 코드를 사용 가능
    • 운영체제의 최신 동향 반영
    • 범용 컴퓨터 시스템에서 리눅스에 익숙한 개발자는 빠르게 적응 가능
      • 단점
      • 경성 실시간 시스템에 적절하지 못함
    • 실시간 운영체제에 비해 요구되는 하드웨어 사양이 높음

15.2 Windows

15.2.1 윈도우의 역사

  • 처음에는 PC에서 그래픽 사용자 인터페이스를 제공하는 것이 목적임
  • Windows NT에서 POSIX 표준 및 Windows 3.0의 API를 지원하는 Win32 추가
    • 보안과 신뢰성 강화
  • Windows 95에서 운영체제 기능 강화
    • 이전의 윈도우가 MS-DOS 위에서 윈도우가 동작한다면, Windows 95에서는 윈도우 안에 MS-DOS 포함
    • 32비트 마이크로프로세서인 80386의 성능을 활용하면서 기존 16비트 프로그램 호환성 제공
    • Windows XP에서 Windows NT 구조에 Windows 95/98의 사용자 편의성 결합
    • 2022년 기준으로, 2021년 발표된 Windows 11이 최신 버전의 윈도우

15.2.2 윈도우 커널

  • Windows XP 이후의 윈도우는 Windows NT 기반
    • 사용자 모드와 커널 모드로 분리
    • 마이크로커널을 확장한 형태의 커널 구조
      • 운영체제가 해야 할 가장 핵심적이고 기본적인 일인 주소변환, 프로세스 및 쓰레드 관리, 프로세스 간 통신만 커널 내부에서 구현하고 나머지는 서비스로 구현
      • 커널의 규모가 작기 때문에 관리가 편하고 서비스를 설정하기 쉬우며, 결함 허용성이 높아짐
      • 사용자 모드와 커널 모드 사이 잦은 전환으로 성능이 저하될 수 있음
      • Windows NT 커널은 운영체제의 기본 서비스는 커널 모드를 나가지 않은 상태에서 동작하며, 운영체제 환경은 사용자 모드에서 별도 프로세스로 동작하게 만들어 절충한 구조
  • 커널 모드에서는 마이크로커널 위에 여러 운영체제가 제공하는 서비스 동작
    • I/O 관리자
    • Win32 윈도우 관리자와 그래픽 장치 인터페이스
      • 성능 향상을 위해 커널 모드에서 도앚ㄱ
    • 보안 참조 모니터
    • LPC(Local Procedure Call) 기능
      • RPC와 비슷하지만 같은 기계에서 동작하는 프로세스 사이의 메시지 전달을 통한 정보교환
    • 가상 메모리 관리자
      • 주소공간 관리 및 가상 메모리 처리
    • 객체 관리자
    • 프로세스 관리자
  • 사용자 모드에서 하드웨어를 접근하기 위해서는 API를 이용하여 커널 모드의 권한 이용
  • 하드웨어는 직접 접근하지 않고 추상화 계층을 거치는데, x86 CPU 외의 다양한 하드웨어에서 윈도우를 동작시키기 위해서임

15.3 Android

15.3.1 모바일 운영체제

  • 모바일 환경의 요구조건
    • 배터리로 동작하기 때문에 전력 소모량을 줄여야 함
    • 대부분 무선 네트워크로 인터넷이 연결됨
    • 터치 스크린 등 입출력장치가 일반적인 PC 환경과 다름
    • 저수준 운영체제와 고수준 사용자 인터페이스가 결합된 형태
  • 현재 안드로이드와 iOS가 대표적인 모바일 운영체제

15.3.2 안드로이드의 개요

  • 2008년 처음 발표되고, 2022년 발표된 안드로이드 13이 최신 버전임
  • 현재 스마트폰에서 가장 널리 사용되고 있으며, 셋톱 박스, 스마트 TV, 자동차 등 사용 범위가 넓어지고 있음
  • 안드로이드의 특징
    • 기본적으로 운영체제의 소스 공개
    • ARM, x86 CPU를 지원하며, 다른 CPU 지원도 이론적으로는 가능
    • C와 C++로 구현된 운영체제에 Java로 개발된 응용 프로그램 동작
    • iOS에 비해 다양한 하드웨어를 지원하기 때문에 파편화 문제 존재
  • 안드로이드 런타임(ART)
    • 응용 프로그램을 처음 설치할 때 중간 코드를 실제 기계 코드로 번역하고, 이후 실행할 때 번역된 코드를 실행해 성능을 높임
    • 설치 시 코드를 번역하는 과정이 포함되기 때문에 시간이 더 걸림

참고 문헌 : 김진욱·이인복. 운영체제 워크북. 한국방송통신대학교출판문화원, 2023.

728x90
728x90

14.1 보안의 개요

14.1.1 보호와 보안

  • 보호의 정의

    • 실행되는 각 프로세스가 사용하는 자원이 다른 프로세스에 영향을 받지 않도록 하는 것
  • 보안의 정의

    • 사용자가 누구인지 정확하게 인식하고, 이 사용자가 권한을 가진 자원만 이용해 허락된 일만 할 수 있게 하여 시스템이 정상적으로 동작함으로써 저장된 자료가 결함이 없게 하며, 시스템을 신뢰할 수 있게 하는 것
  • 보호와 보안의 목적

    • 악의적인 사용자가 시스템 자원 접근 제한을 의도적으로 위반하는 것 방지
    • 잠재적 오류를 미리 검출하여 시스템의 신뢰도를 높임
    • 시스템 자원을 권한이 없는 사용자가 잘못 사용하는 것을 막음
    • 권한이 있는 사용자와 권한이 없는 사용자 구별

14.1.2 보호영역

  • 보호영역
    • 한 프로세스가 접근할 수 있는 자원
    • 각 영역은 자원의 집합과 그 자원에 대해 프로세스가 할 수 있는 연산정의
    • 하나의 영역은 접근권한의 집합
  • 접근권한
    • 프로세스가 객체에 대한 연산을 수행할 수 있는 능력
    • <객체 이름, 권한 집합>
    • 영역 사이에서 공유될 수 있음

14.1.3 운영체제 보안

  • 운영체제 보안의 기본 목표

    • 기밀성 : 주체가 자원을 합법적으로 사용할 수 없다면 사용 되어서는 안됨
    • 가용성 : 주체가 자원을 사용하는 데 문제가 없다면 반드시 사용할 수 있어야 함
    • 무결성 : 객체에 저장되어 있는 정보는 항상 정확함
  • 정보침해

    • 운영체제 보안의 기본 목표가 달성되지 못하고, 정보가 불법적으로 읽히거나 다른 값이 덮어 쓰이는 것
    • 소프트웨어의 오류나 오작동을 통해 보호영역이 지켜지지 못해 발생할 수 있음
    • 공격자가 의도적으로 다른 사용자의 권한을 도용하여 발생하는 경우 가능
    • 운영체제를 통한 침해 형태
      • 가로채기 : 기밀성 공격. 공격자가 허락받지 않은 컴퓨터 자원 접근
      • 흐름 차단 : 가용성 공격. 시스템의 일부를 파괴하거나 사용할 수 없게 함
      • 변조 : 무결성 공격. 공격자가 기존에 있던 데이터의 내용을 바꿈
      • 위조 : 무결성 공격. 공격자가 기존에 없던 불법적인 정보 삽입
    • 대표적인 침해유형
      • 트로이 목마 : 숨겨진 기능이 있는 프로그램을 사용자가 실행하게 만들어서 이 사용자의 권한을 이용하여 시스템에 침투하는 것
        • 트랩도어 : 정상적인 인증절차나 암호화를 피해 갈 수 있는 비밀 통로
        • 비밀 채널 : 데이터를 주고받을 수 없는 프로세스 사이에서 정상적인 데이터 전송 메커니즘이 아닌 다른 방법으로 정보를 알아내는 형태의 공격
        • 웜, 바이러스 : 자기 자신을 복사하여 다른 컴퓨터에 전파시키는 능력을 가진 프로그램. 바이러스는 다른 프로그램을 감염시켜서 전파시키는 능력을 가짐

14.2 보안정책 및 보안 메커니즘

  • 보안정책 : 보안을 어떠한 관점에서 무엇을 행할 것인지 결정하는 것
  • 보안 메커니즘 : 보안을 어떠한 방법으로 할 것인지 결정하는 것

14.2.1 보안정책

  • 권한부여
    • 어떤 주체가 어떤 객체를 어떻게 액세스할 수 있는지 결정하는 것
    • 모든 주체와 객체는 식별 및 인증이 가능해야 함
      • 식별(identification) : 어떤 주체와 객체가 무엇인지 신분을 알아내는 것
      • 인증(authentication) : 어떤 주체와 객체가 정말 자신이 주장하는 주체와 객체가 맞는지 확인하는 것
  • 접근제어
    • 임의적 접근제어
      • 관리자 또는 자원 소유자가 주체에 자원의 접근권한을 부여할 수 있음
      • 유연하게 자원을 공유할 수 있는 반면, 관리가 쉽지 않음
        • 강제적 접근제어
      • 보안정책이 중앙에서 관리되며, 각 사용자는 이 정책을 넘어서는 행동을 할 수 없음
      • 관리가 확실한 반면, 자원 공유가 어려움
        • 역할 기반 접근제어
      • 주제는 역할이 주어졌을 때만, 권한을 부여받은 후 현재 행사하고 있는 역할에 권한이 주어졌을 때만 권한 사용 가능
  • 최소권한
    • 사용자는 임무를 수행하기 위해 필요한 최소한의 권한을 받아야 함
    • 임무가 끝나면 이 권한을 반환해야 함
  • 감사
    • 컴퓨터 시스템에서 발생한 이벤트는 해당 내용 정보가 기록되어야 하고, 이 정보는 변조되지 않고 보존되어야 함
    • 감사과정을 통해 시스템의 로그(log) 파일을 조사하여 시스템에 발생한 이벤트를 추적하고, 침해 사고 등이 발생했는지 여부를 확인하고 감시 해야 함

14.2.2 보안 메커니즘

  • 주체 및 객체의 레이블 부여 메커니즘
    • 주체와 객체마다 유일한 식별자를 부여하여 서로 구별이 가능하게 함
    • 주체와 객체마다 보안등급을 부여하여 허락되지 않은 접근을 막음
  • 안전한 암호 메커니즘
    • 비밀키 암호화 알고리즘과 공개키 암호화 알고리즘으로 나뉘며, 서로 다른 특징을 가지고 있어서 사용되는 분야가 다름
  • 안전한 인증 메커니즘
    • 패스워드 : 가장 간단한 방법
    • 다요소 인증 : 사용자 인증에 둘 이상의 방법 요구
  • 임의적 접근제어를 위한 메커니즘
    • UNIX 예 : 파일의 소유자가 자신, 자신이 속한 그룹, 나머지에 읽기, 쓰기, 실행 권한을 부여 가능
  • 보안등급 관리 메커니즘
    • 사용자에게 다양한 종류의 보안등급 부여
    • 보안등급을 체계적이고 안전한 방법으로 관리되어야 함
  • 기록 파일 관리 메커니즘
    • 시스템에 발생한 이벤트 기록을 안전한 위치에 보관하고, 이를 수정하지 못하게 함
  • 운영자 권한의 분산 메커니즘
    • 시스템 관리자의 권한을 세분화하여 목적에 따라 해당 역할을 담당 관리자에게 부여함
    • 최소권한 부여 원칙을 구현하는 방법 중 하나

14.2.3 하드웨어 보호를 위해 사용되는 방법

  • 이중 모드 연산
    • 사용자 모드는 자신에게 허용된 권한만 행사할 수 있으며, 대부분의 경우 프로세스는 사용자 모드에서 수행함
    • 반드시 필요한 경우 커널 모드에서 동작함
    • 특권명령 : 시스템의 상태를 바꾸어 보안에 위험을 줄 수 있는 명령으로 운영체제와 커널 모드에서만 호출되어야 함
  • 메모리 보호
    • 각 프로세스가 가지는 주소공간은 서로 분리되어야 함
    • 메모리 관리 장치가 물리적 메모리에 주소공간을 대응시키며, 운영체제를 보호함
      • 기준 레지스터 : 프로세스가 접근할 수 있는 물리적 주소의 최솟값
      • 한계 레지스터 : 프로세스가 접근할 수 있는 주소 범위의 길이
  • CPU 보호
    • 무한 루프에 빠진 프로세스가 CPU를 독점하는 것을 막아야 함
    • 타이머는 주기적으로 인터럽트를 발생시켜, 프로세스가 자신에게 할당 된 시간을 다 쓰면 대기하고 이쓴 다른 프로세스로 제어를 옮김
    • 타이머의 동작을 수정하는 명령은 특권명령이어야 함
  • 입출력 보호
    • 한 프로세스의 입출력에 다른 프로세스가 영향을 미쳐서는 안 됨
    • 입출력을 요청한 프로세스는 일단 중단되고, 시스템 콜을 통해 커널 모드 진입
    • 주변장치에 접근해 입출력을 수행한 후, 결과를 대기 중인 프로세스에 전달하고 사용자 모드로 돌아옴

14.2.4 암호화

  • 암호화 : 원래 정보를 변형하여 특정한 정보를 알지 못하면 변형된 정보에서 원래 정보를 얻어 낼 수 없게 하는 과정
    • 복호화 : 암호화의 반대로, 변형된 정보에서 원래 정보를 구하는 과정
  • 키 : 암호화와 복호화에 필요한 특정 정보
    • 비밀키 암호 시스템 : 암호화 키와 복호화 키가 동일함
    • 공개키 암호 시스템 : 암호화 키와 복호화 키가 다름
  • 현대 암호 시스템은 키가 없을 경우 복호화에 걸리는 시간을 오래 걸리게 하여, 이 과정이 의미 없게 하는 것이 목표임
  • 암호화 방법에 따른 분류
    • 코드 시스템 : 코드 테이블에 의해 암호화되는 시스템
    • 암호 시스템 : 암호키와 이를 이용하여 암호화하는 암호 알고리즘으로 구성
  • 비밀키 암호 시스템
    • 암호 시스템의 보안은 비밀키를 아는 사람만 암호화와 복호화가 가능하다는 데 의거함
    • 키 공유 문제
      • 암호화된 데이터를 교환하려는 사람들끼리 키를 어떻게 공유할 것인가?
      • 특정한 형태의 키는 공격에 취약하며, 공격자는 예상 가능한 키를 차례로 대입하는 사전 공격 시도 가능
      • 공개키 암호 시스템과 결합하여 난수 생성기로 만든 키를 검사하여 공유함
      • 대부분의 연산이 간단하여 공개키 암호 시스템에 비해 암호화 및 복호화 속도가 빠름
  • 공개키 암호 시스템
    • 암호화는 모두가 할 수 있지만, 복호화는 개인키를 가진 사람만 할 수 있다는 데 기반함
    • 암호화 키와 복호화 키가 다름
      • 공개키 : 암호화에 사용되는 키로 모두에게 공개됨
      • 개인키 : 복호화에 사용되는 키로 각 개인들만 가지고 있음
    • 전자서명
      • 서명은 한 사람만 할 수 있지만, 서명의 확인은 모두가 가능하다는 데 착안함
      • 모두가 알고 있는 데이터에 대해 서명하려는 사람은 자신의 개인키로 복호화함
      • 이 결과는 의미가 없지만, 이를 암호화하면 원래 데이터를 얻을 수 있고, 복호화가 가능한 사람은 이 키를 가진 사람밖에 없기 때문에 누가 서명했는지 확인 가능
    • A와 B 사이 암호화 통신 과정
      • A가 먼저 비밀 정보를 생성한 후 B의 공개키를 이용하여 암호화하고 B에게 전달
      • B도 비밀 정보를 생성한 후 A의 공개키를 이용하여 암호화하고 A에게 전달
      • A, B는 모두 자신이 수신한 정보와 자신이 알고 있던 정보를 이용하여 사전에 약속한 알고리즘으로 비밀키 생성
      • A, B는 생성한 비밀키를 이용하여 비밀키 암호 시스템으로 데이터를 주고받음

14.3 운영체제 보안 모델

14.3.1 참조 모니터 모델

  • 주체가 객체를 접근하는 과정에 대해 참조 모니터가 접근제어 수행
  • 공격자는 참조 모니터를 우회하여 자신에게 권한이 주어지지 않은 접근을 할 수 없음
  • 주체와 객체 사이에서 단순접근의 허용 여부만 결정하기 때문에, 접근한 객체에 포함된 기밀 정보를 유포하는 것은 막을 수 없음

    14.3.2 정보 흐름 모델

  • 정보가 흐르는 방향을 유한상태기계를 이용하여 모델링하고 제어함
  • 허가된 정보 흐름은 허락, 허가받지 않은 정보 흐름은 방지
  • 벨-라파듈라(BLP) 모델
    • 쓰기 접근은 객체의 보안 수준이 주체의 보안허가 수준보다 높거나 같아야 가능함
    • 읽기 접근은 객체의 보안 수준이 주체의 보안허가 수준보다 낮거나 같아야 가능함
    • 정보의 기밀성 유지에 초점을 두었지만, 무결성은 쓰기를 제어하는 수준에서만 고려함
  • 비바 모델
    • 모든 주체는 자신보다 높은 등급 객체에 쓰를 할 수 없음
    • 벨-라파듈라 모델과 반대
    • 정보의 무결성을 고려하는 모델

14.4 보안 커널

  • 보안 커널
    • 운영체제에서 기존의 운영체제 커널에 보안기능을 통합시킨 것
      • 자주 수행되고 중요한 일을 커널에 둠
    • 컴퓨터 시스템은 여러 계층으로 이루어지며, 각 계층은 자신의 바로 아래 계층만 접근 가능
  • TCB(Trusted Computing Base)
    • 정상적으로 동작하지 않을 경우, 시스템 보안에 문제가 생길 수 있는 하드웨어, 펌웨어, 소프트웨어, 물리적 설치장소, 보안정책 등의 집합
    • 참조 모니터를 구현한 형태

참고 문헌 : 김진욱·이인복. 운영체제 워크북. 한국방송통신대학교출판문화원, 2023.

728x90
728x90

13.1 분산 운영체제의 개요

13.1.1 분산 시스템

  • 분산 시스템의 정의
    • 현대의 분산 시스템은 복수의 컴퓨터가 각각의 프로세서를 가지고 네트워크로 연결됨
    • 사용할 수 있는 자원의 구분
      • 로컬 자원 : 자신의 컴퓨터에 속한 자원
      • 원격 자원 : 네트워크로 연결된 컴퓨터에 속한 자원
      • 원격 자원을 로컬 자원처럼 쉽게 사용할 수 있는 방법을 제공해야 함
  • 서버/클라이언트 모델
    • 서버 : 자원을 제공하는 쪽
    • 클라이언트 : 자월을 이용하는 쪽
  • 분산 시스템의 장점
    • 자원 공유 : 각 컴퓨터의 자원을 네트워크로 연결된 컴퓨터가 공유
    • 성능 향상 : 여러 대의 프로세서에 작업을 분할하여 병렬적으로 동시 수행
    • 신뢰성 향상 : 한 대가 고장나더라도 다른 컴퓨터가 작업을 계속 수헹
    • 통신의 편리성 : 단일 시스템 내부에서 동자갛는 서비스와 같은 서븨스 제공
  • 네트워크의 구성 형태 및 고려사항
    • 구성 형태 : 트리형, 스타형, 링형, 버스형 등
    • 고려사항 : 망 구축비용, 통신비용, 신뢰성 등

      13.1.2 분산 운영체제

  • 분산 운영체제
    • 분산 시스템을 관리하기 위한 운영체제
    • 투명성 제공 : 로컬 자원과 원격 자원의 구분을 없애 줌
      • 데이터 이주 : 원격 데이터를 로컬로 전송해 와서 사용하는 방식
      • 계산 이주 : 원격 프로시저 호출을 통해 계산을 원격지에서 처리하고 결과를 전송받는 방식
      • 프로세스 이주 : 프로세스 자체를 원격지로 이주시키는 방식

13.2 분산 파일 시스템

  • 분산 파일 시스템의 개요
    • 원격 파일을 로컬 파일처럼 사용하게 해 줌
    • 일반적인 사용자는 원격 파일과 로컬 파일을 구별할 필요가 없음
    • UNIX에서는 마운트(mount)를 이용하여 파일 시스템을 사용할 수 있으며, 네트워크로 연결된 파일 시스템도 사용 가능함
    • 네트워크 사용이 많아지면 성능이 떨어질 수 있으므로 캐시를 사용함

13.3 분산 메모리

13.3.1 원격 메모리

  • 원격 메모리
    • 가상 메모리는 로컬 메모리와 보조기억장치를 합친 형태로 제공됨
    • 원격 메모리는 API를 사용하여 클라이언트/서버 형태로 구성됨

13.3.2 분산 공유 메모리

  • 분산 공유 메모리

    • 물리적으로 분리된 메모리들이 하나의 주소공간으로 접근하게 해 줌
    • 장점
      • 노드의 개수가 늘어나도 잘 확장됨
      • 프로그래머는 실제로 메모리를 공유하기 위해 할 일들에 신경 쓸 필요가 없음
      • 복잡하고 큰 데이터 처리에 유리함
      • 멀티프로세서 시스템에 비해 저렴하게 구현 가능
      • 큰 가상 메모리 공간 제공
    • 단점
      • 접근속도가 느림
      • 공유 메모리에 동시에 둘 이상이 접근할 때 보호 메커니즘 필요
      • 성능이 떨어질 수 있음
      • 프로그래머가 분산 공유 메모리를 직접 제어하는 것이 쉽지 않음

    13.4 원격 프로시저 호출

    • 원격 프로시저 호출(Remote Procedure Call : RPC)
      • 프로세스가 네트워크로 연결된 다른 컴퓨터에 있는 프로시저를 실행시키는 일
        • 마치 같은 컴퓨터에 있는 것처럼 이용할 수 있게 함

13.4.1 원격 프로시저 호출의 동작

  • RPC의 동작
    • RPC를 사용하려는 클라이언트는 같은 주소공간에 있는 프로시저를 일단 호출함
    • 호출된 프로시저는 전달받은 매개변수를 메시지로 포장하여, 네트워크를 이용하여 대기하고 있는 특정 서버의 프로세스에 전달하고 결과를 기다림
    • 메시지를 받은 프로세스는 이를 해당 프로시저에 전달하여 실행시킴
    • 실행결과는 다시 메시지로 포장되어 결과를 기다리고 있는 프로시저에 전달됨
    • 메시지를 해석하여 원격 프로시저의 실행결과를 얻어 내고, 이를 리턴함

13.4.2 원격 프로시저 호출의 구현

  • RPC 구현의 고려사항
    • RPC의 사용과 로컬 프로시저의 사용이 이상적으로는 구별되지 않아야 함
    • 서로 다른 주소공간에 속하기 때문에 메모리 주소를 리턴하는 참조 호출은 의미가 없음
    • RPC의 수신자는 호출된 곳과 유사한 환경에서 실행해야 함

참고 문헌 : 김진욱·이인복. 운영체제 워크북. 한국방송통신대학교출판문화원, 2023.

728x90
728x90

12.1 저장장치의 종류

12.1.1 순차접근 저장장치

  • 순차접근 저장장치
    • 순차적으로 기록 및 판독을 하는 저장장치
    • 예 : 테이프 장치
    • 초기 접근시간이 굉장히 오래 걸림
    • 대량의 데이터 백업용으로 사용됨

12.1.2 직접접근 저장장치

  • 직접접근 저장장치
    • 지정한 위치를 직접 찾아 데이터를 읽거나 쓸 수 있는 장치
    • 임의접근 저장장치
  • 자기 디스크
    • 자성을 띤 디스크의 표면에 데이터를 쓰거나 읽을 수 있음
    • 구성 : 한 장 이상의 플래터, 헤드, 암(arm)
    • 트랙 : 플래터의 중심축을 기준으로 한 동심원 형태
    • 섹터 : 트랙을 분할하여 일정한 용량을 저장할 수 있는 호 형태
    • 실린더 : 플래터가 여러 장인 경우, 중심축으로부터 같은 거리에 있는 트랙들의 모음
    • 동작
      • 헤드를 원하는 트랙으로 이동
      • 헤드에 원하는 섹터가 오도록 플래터를 회전시킴
  • 광디스크
    • 디스크 표면에 레이저를 쏘아 반사
    • 나선형인 하나의 트랙으로 구성됨
  • SSD
    • 읽고 쓰기가 가능하면서 전력공급 없이도 데이터가 지워지지 않는 메모리를 이용함
    • 자기 디스크보다 속도가 빠르고 전력 소모가 적음
    • 자기 디스크보다 가격이 비싸며 수명이 짧음

12.2 디스크 스케줄링 알고리즘

  • 디스크 스케줄링
    • 디스크 접근 요구를 효율적으로 처리하는 순서를 결정하는 작업
    • 프로세스들의 요구를 디스크 큐에 두고 관리함
    • 기계적 동작이 최소화되도록 디스크 큐를 재배열함
  • 디스크 접근 요구 처리시간 : 탐구시간 + 회전지연시간 + 전송시간
    • 탐구시간(seek time)
      • 기계적인 동작에 의해 헤드를 원하는 트랙에 위치시키는 시간
      • 가장 느림
    • 회전지연시간(rotational latency time)
      • 헤드가 위치한 트렉에서 요구된 자료가 헤드 밑에 이를 때까지 디스크가 회전하는 데 걸리는 시간
    • 전송시간(transfer time)
      • 헤드 위치에서 자료를 읽거나 쓰는 데 걸리는 시간
  • 스케줄링 형태
    • 탐구시간 최적화 : 대부분의 알고리즘
    • 회전지연시간 최적화

12.2.1 FCFS 스케줄링

  • FCFS(Firsr Come First Served) 스케줄링 알고리즘
    • 먼저 도착한 접근 요구가 먼저 서비스를 받는 방법
  • 단점
    • 접근 요구들의 도착순서에 따라 헤드의 이동거리가 길어질 수 있음
    • 디스크 부하가 높을수록 응답시간이 길어짐

12.2.2 SSTF 스케줄링

  • SSTF(Shortest Seek Time First) 스케줄링 알고리즘
    • 최단 탐구시간을 갖는 접근 요구를 먼저 처리하는 방법
  • 장점
    • FCFS 스케줄링보다 처리량이 많고 평균응답시간은 비교적 짧음
      • 일괄처리 운영체제에 적합
  • 단점
    • 양 끝 쪽에 위치한 트랙에 대한 접근 요구는 기아상태 발생 가능
    • 트랙의 위치에 따라 응답시간의 편차가 큼
      • 시분할 운영체제에 부적합

12.2.3 SCAN 스케줄링

  • SCAN 스케줄링 알고리즘
    • 양 끝 트랙 사이를 왕복하며 진행방향의 가장 가까운 접근 요구를 먼저 처리하는 방법
    • 진행방향으로 더 이상 접근 요구가 없더라도 항상 끝 실린더까지 도달한 후 방향을 바꿈
  • 장점
    • SSTF 스케줄링의 응답시간 편차를 어느 정도 해소함
  • 단점
    • 새로운 요구가 헤드 진행방향의 바로 앞이냐 바로 뒤냐에 따라 대기시간의 편차가 큼
    • 양 끝 트랙은 헤드가 한 번 왕복할 때 한 번의 서비스 기회만 있음

12.2.4 C-SCAN 스케줄링

  • C-SCAN 스케줄링 알고리즘
    • 바깥쪽이든 안쪽이든 오로지 한쪽 방향으로만 접근 요구를 처리하는 방법
    • 나머지는 SCAN 스케줄링과 동일함
  • 장점
    • 양 끝 트랙에 대한 접근 요구의 차별 제거
    • 응답시간의 편차가 매우 작음

12.2.5 LOOK 및 C-LOOK 스케줄링

  • LOOK 및 C-LOOK 스케줄링 알고리즘
    • 진행방향으로 더 이상 접근 요구가 없으면 방향을 바꾸는 방법
      • 이때 C-LOOK 스케줄링은 가장 먼 접근 요구의 트랙까지만 이동
    • 나머지는 LOOK은 SCAN, C-LOOK은 C-SCAN 스케줄링과 동일함

12.2.6 SLTE 스케줄링

  • SLTF(Shortest Latency Time First) 스케줄링 알고리즘
    • 회전지연시간 최적화를 위한 알고리즘
    • 동일 실린더 내의 접근 요구 중 회전지연시간이 가장 짧은 것을 먼저 처리하는 방법
  • 장점
    • 이론적인 최적해와 거의 일치함

12.3 파일 관리

12.3.1 파일 관리자의 요소

  • 파일 관리자
    • 운영체제의 주요 구성요소
      • 파일을 생성, 삭제, 수정
    • 파일 접근 제어, 파일에 사용되는 자원 관리
  • 파일 관리자의 요소
    • 액세스 방식 : 파일에 저장되어 있는 데이터에 접근하는 방식을 정함
    • 파일 관리 : 파일을 저장, 참조, 공유할 수 있도록 하며, 안전하게 보호될 수 있도록 함
    • 보조기억장치 관리 : 보조기억장치에 파일을 저장하는 데 필요한 공간을 할당함
    • 파일 무결성 유지 : 파일의 정보가 소실되지 않도록 보장함

12.3.2 파일 관리자의 기능

  • 파일 관리자의 기능
    • 보조기억장치를 활성화시켜 파일을 할당함
    • 파일의 기록을 갱신하는 동안에는 파일을 메모리에 적재함
    • 테이블을 갱신하거나 수정된 사항이 있다면 파일을 보조기억장치의 같은 장소에 다시 쓰고 그 파일을 해지함

12.3.3 파일 구조와 접근방식

  • 파일 구조
    • 파일을 구성하는 레코드들이 보조기억장치에 배치되는 방식
  • 순차 파일
    • 레코드가 무릴적 순서에 따라 저장되어 있는 파일
    • 순차접근 저장장치에 많이 이용됨
  • 인덱스된 순차 파일
    • 각 레코드의 키를 기준으로 한 논리적 순서대로 레코드가 저장되고, 일부 주요 레코드의 실제 주소가 저장된 인덱스를 구성하여 관리하는 파일
    • 키 순서에 의한 순차 액세스와 인덱스의 검색을 통한 직접 액세스 모두 가능
    • 보통 디스크에 이용됨
  • 직접 파일
    • 각 레코드의 키를 이용하여 직접접근 저장장치의 물리적 주소를 통해 직접 액세스되는 파일

12.3.4 디스크 공간 할당

  • 연속 할당 기법
    • 보조기억장치의 연속된 가용공간에 파일 저장공간을 할당하는 방식
    • 생성하려는 파일의 저장공간 크기를 미리 정해야 함
    • 장점
      • 액세스가 효율적임
      • 디렉터리 구현이 단순함
    • 단점
      • 외부 단편화
      • 파일 크기 확장에 대한 대응이 비효율적임
  • 불연속 할당 기법
    • 섹터 또는 정해진 수의 섹터로 구성된 블록 단위로 공간을 할당하는 방식
    • 포인터를 이용하여 블록들을 연결 관리
    • 장점
      • 연속 할당 기법의 단점 해결
    • 단점
      • 파일 공간 분산으로 성능저하 발생
      • 포인터 관리를 위한 연산 및 공간 소비

참고 문헌 : 김진욱·이인복. 운영체제 워크북. 한국방송통신대학교출판문화원, 2023.

728x90
728x90

11.1 장치의 개념

  • 컴퓨터 시스템의 장치
    • CPU와 메모리
      • 프로세스를 실행시키기 위한 필수 요소
    • 디스크 드라이브, 키보드, 마우스, 비디오 디스플레이, 프린터 등
      • 데이터 입력이나 출력에 사용되는 입출력장치
  • 입출력장치의 구분
    • 전용장치
      • 한 번에 단지 하나의 프로세스에만 할당됨
    • 공용장치
      • 여러 프로세스에 동시에 할당됨
    • 가상장치
      • 디스크 등 공유 가능한 장치를 이용하여 전용장치를 공용장치처럼 보이게 하여 여러 프로세스에 할당됨

11.2 장치의 구성

  • 하드웨어
    • 장치
    • 장치제어기 : 장치를 직접적으로 다루는 전자장치
  • 운영체제
    • 장치 드라이버 : 응용 프로그램이 요청한 일반적인 입출력 요청을 해당 장치에 맞도록 변환해 주는 것

11.2.2 물리적 구성

  • 물리적 구성
    • CPU, 메모리, 입출력장치가 버스로 연결됨
    • CPU는 장치제어기의 레지스터를 이용하여 장치에 명령을 보내거나 장치의 상태를 확인함
  • 메모리 사상 입출력
    • 메모리의 특정 영역을 장치제어기의 레지스터와 대응시켜 둠
    • 메모리를 읽고 쓰는 것으로 장치제어기의 레지스터를 읽고 쓰는 것과 동일한 효과를 얻음

11.3 입출력 처리 유형

  • 프로세스가 진행하며 입출력이 발생하는 경우의 처리방법

11.3.1 프로그램 방법

  • CPU만 이용하여 입출력을 처리하는 것으로 폴링 이용
    • 폴링(polling) : CPU가 입출력장치의 상태를 지속적으로 확인하여 CPU가 원하는 상태가 될 때까지 기다리는 것
  • CPU 낭비가 심해 비효율적임

11.3.2 인터럽트 방법

  • 입출력 처리에 인터럽트 이용
    • 인터럽트(interrupt) : 어떤 장치가 다른 장치의 작업을 잠시 중단시키고 자신의 상태를 알리는 기능
  • 인터럽트 처리과정
    • 입출력장치가 가용상태가 되었다고 인터럽트를 담당하는 인터럽트 제어기에 신호를 보냄
    • 인터럽트 제어기는 CPU에 인터럽트 신호를 보냄
    • CPU는 현재 실행 중이던 명령만 마치고 즉시 인터럽트에 응답함
    • 인터럽트 제어기는 이벤트 대상에 대한 정보를 CPU에 보냄
    • CPU는 현재 상태를 보관하고 필요한 입출력 처리를 한 후 원래 프로세스 실행상태로 복귀함

11.3.3 DMA 방법

  • 입출력 처리에 DMA 이용
    • DMA(Direct Memory Access) : DMA 제어기를 이용하여 CPU를 통하지 않고 메모리에 직접 접근하여 데이터를 전송하는 방법
  • DMA 처리과정
    • CPU는 입출력에 필요한 정보를 DMA 제어기에 넘김
    • DMA 제어기는 소스에서 목적지로 데이터를 보내도록 장치제어기에 요청함
      • CPU가 처음에 지시한 양이 될 때까지 반복함
    • 원하는 양의 입출력이 끝나면 DMA 제어기는 인터럽트 제어기에 신호를 보내 인터럽트를 발생시켜 CPU에 입출력 작업이 모두 끝났음을 알림
  • 장점
    • 인터럽트 발생 횟수를 단 한 번으로 줄여 CPU의 효율 증대
  • 사이클 스틸링
    • CPU와 DMA 제어기 모두 메모리를 액세스하려는 경우 DMA 제어기에 우선권을 주는 것

11.4 입출력 관리

  • 입출력장치와는 독립적인 입출력 관리방법

11.4.1 버퍼링

  • 버퍼(buffer)
    • 입출력 데이터 등의 정보를 전송할 때 일시적인 데이터 저장장소로 사용되는 메모리의 일부
  • 버퍼링(buffering)
    • CPU의 데이터 처리속도와 데이터 전송속도의 차이로 인한 문제를 버퍼를 통해 해결함
    • 단일 버퍼링
      • 하나의 버퍼 이용
      • 입력장치가 데이터를 버퍼에 저장하면 CPU는 그 데이터를 처리고, 다시 입력장치가 다음 데이터를 저장하면 CPU가 또 처리하는 방식
      • 저장과 처리를 동시에 할 수 없어 비효율적임
    • 이중 버퍼링
      • 두 개의 버퍼 이용(플립플롭 버퍼링)
      • 버퍼 1에 데이터를 저장하는 동안 버퍼 2의 데이터를 처리할 수 있고, 버퍼 2에 데이터를 저장하는 동안 버퍼 1에 있는 데이터를 처리 할 수 있음
    • 순환 버퍼링
      • 여려 개의 버퍼를 이용하여 돌아가면서 사용하는 것

11.4.2 스풀링

  • 스풀링(spooling)
    • 입출력 프로세스와 저속 입출력장치 사이의 데이터 전송을 자기 디스크와 같은 고속장치를 통하도록 하는 것
    • 일종의 버퍼링
    • 장점
      • 프로세스 입장에서는 입출력 작업이 빨리 끝나게 됨
      • 전용장치를 공용장치처럼 보이게 하는 가상장치로 변화시킴

참고 문헌 : 김진욱·이인복. 운영체제 워크북. 한국방송통신대학교출판문화원, 2023.

728x90
728x90

10.1 페이지 교체 알고리즘

  • 최적화 원칙
    • 최적의 성과를 얻기 위해 앞으로 가장 오랫동안 사용되지 않을 페이지를 교체 대상으로 선택함
    • 미래를 예측할 수 없으므로 실제로 실현 불가능
  • 교체 제외 페이지
    • 효율적인 동작을 위해 교체가 일어나지 않도록 페이지 프레임에 고정함
    • 페이징을 위한 커널 코드 영역
    • 커넬에 속하지 못한 보조 기억장치 드라이버 영역
    • 시간을 맞춰 동작해야 하는 코드 영역
    • DMA 등에 의해 입출력로부터 직접 데이터가 교환되어야 하는 데이터 버퍼 영역 등

10.1.1 FIFO 페이지 교체

  • FIFO(First In First Out) 페이지 교체 알고리즘
    • 메모리 내에 가장 오래 있었던 페이지 교체
    • FIFO 큐로 구현함
  • 단점
    • 가장 많이 쓰이는 페이지를 교체시킬 가능성이 있음
    • Belady의 이상현상 : 프로세스에 더 많은 수의 페이지를 할당할 경우 오히려 페이지 부재가 더 많이 발생하는 현상

10.1.2 LRU 페이지 교체

  • LRU(Least Recently Used) 페이지 교체 알고리즘
    • 메모리 내에서 가장 오랫동안 사용되지 않은 페이지 교체
    • 최근의 상황이 가까운 미래에 대한 좋은 척도라는 국부성 휴리스틱에 의존하는 것
  • 국부성(locality)
    • 프로세스는 기억장치 내의 정보를 어느 한순간에 특정 부분을 집중적으로 참조한다는 것
    • 시간 국부성과 공간 국부성
  • 참조시간을 이용한 LRU 구현
    • 각 페이지가 참조될 떄마다 그때의 시간을 테이블에 기록함
    • 교체가 필요한 경우 참조시간이 가장 오래된 페이지를 교체 대상으로 선택함
  • 리스트를 이용한 LRU 구현
    • 메모리에 적재된 페이지 번호를 저장하는 리스트 이용
    • 페이지를 액세스하면 해당 페이지 번호를 리스트의 선두로 옮김
    • 교체가 필요한 경우 리스트의 끝에 있느 ㄴ페이지를 교체 대상으로 선택함
  • 장점
    • Belady의 이상현상이 발생하지 않음
    • 최적화 원칙에 근사한 선택 가능
  • 단점
    • 경험적 판단이 맞지 않는 상황 존재
      • 여러 페이지로 구성되는 커다란 루프
    • 막대한 오버헤드

10.1.3 LFU 페이지 교체

  • LFU(Least Frequently Used) 페이지 교체 알고리즘
    • 메모리 내에서 참조된 횟수가 가장 적은 페이지 교체
  • 단점
    • 가장 드물게 이용되는 페이지가 가장 최근에 메모리로 옮겨진 페이지일 가능성이 있음
    • 초기에 매우 많이 사용된 후 더 이상 사용되지 않는 페이지는 불필요하게 메모리를 점유할 가능성이 있음
    • 막대한 오버헤드

10.1.4 2차 기회 페이지 교체

  • 2차 기회 페이지 교체 알고리즘
    • 참조 비트가 0이면서 메모리 내에 가장 오래 있었던 페이지 교체
    • FIFO 페이지 교체를 보완한 기법
    • 알고리즘 동작
      1. 참조할 페이지가 메모리에 존재하지 않을 경우
        • 페이지 프레임에 빈 자리가 있을 경우 : 해당 페이지를 페이지 프레임에 적재, 큐에 추가, 참조 비트는 0으로 설정
        • 페이지 프레임에 빈자리가 없을 경우
          • 1단계 : 큐의 선두 항목을 꺼내 참조 비트 조사
          • 2단계 : 참조 비트가 1이면, 그 페이지를 교체 대상으로 선택
          • 3단계 : 참조 비트가 0이면, 그 페이지를 교체 대상으로 선택
            • 교체 대상으로 선택된 페이지가 있던 페이지 프레임에 참조할 페이지 적재, 큐에 추가, 참조 비트는 0으로 설정
      2. 참조할 페이지가 메모리에 존재할 경우
        • 큐의 위치는 변화시키지 않고 해당 페이지의 참조 비트만 1로 설정
  • 클럭 페이지 교체 알고리즘
    • 2차 기회 알고리즘에서 큐를 변형된 원형 큐로 관리
      • 원형 큐가 시곗바늘이 돌아가는 것처럼 관리됨
    • 원형 큐의 포인터는 마지막에 추가된 페이지의 다음 위치를 가리킴
      • 페이지 프레임이 꽉 차지 않은 경우 : 포인터는 빈칸을 가리킴
      • 페이지 프레임이 꽉 찬 경우 : 포인터는 큐의 선두를 가리킴

10.2 프로세스별 페이지 집합 관리

  • 각 프로세스가 사용할 수 있는 페이지 프레임의 개수 제한
  • 프로세스별 페이지 집합
    • 프로세스마다 사용할 수 있는 페이지 프레임 개수만큼 메모리에 유지되는 페이지 집합
    • 집합의 크기가 작을수록 시스템 처리량 증대
      • 각 프로세스별 페이지 부재는 자주 발생하여 성능 저하
    • 집합의 크기가 클수록 프로세스별 페이지 부재는 덜 발생함
      • 메모리에 적재될 수 있는 프로세스 수는 줄어듦

10.2.1 워킹 세트 알고리즘

  • 워킹 세트(working set)
    • 페이지 부재비율을 감소시키기 위해 데닝(Denning)이 제안한 모델
  • 프로세스의 워킹 세트 W(t,w)
    • 시각 t에 t를 포함한 직전 w시간 동안 참조한 페이지의 집합
      • w : 워킹 세트의 윈도 크기
    • 시각 t-w+1부터 시각 t까지 참조한 페이지의 집합
    • 프로세스가 수행됨에 따라 페이지가 삭제, 추가 또는 변함없이 유지
  • 쓰레싱(thrashing)
    • 페이지 부재가 비정상적으로 많이 발생하여 프로세스 처리보다 페이지 교체처리에 너무 많은 시간을 소비함으로써 시스템의 처리량이 급격히 저하되는 현상
  • 워킹 세트 알고리즘
    • 프로세스의 워킹 세트를 메모리에 유지시키는 것을 원칙으로 하는 기법
    • 각 프로세스의 워킹 세트 감시
    • 워킹 세트 크기에 해당하는 충분한 페이지 프레임 할당
    • 충분한 여분의 페이지 프레임이 존재하면 다른 프로세스를 들여옴
      • 실행 프로세스의 수를 늘림
        • 실행 중인 프로세스들의 워킹 세트 크기의 합이 증가하여 총페이지 프레임 수를 넘을 경우
      • 우선순위가 가장 낮은 프로세스를 일시적으로 중지시켜 여유 페이지 프레임 확보
      • 워킹 세트에 포함되지 않는 페이지를 담고 있는 프레임은 필요시 교체 대상으로 선택
  • 문제점
    • 과거를 통해 미래를 예측하는 것이 정확하지 않음
    • 워킹 세트를 알아내고 업데이트하는 것이 현실적으로 어려움
    • 워킹 세트를 구하기 위한 윈도 크기 w의 최적값을 알기 어려움

10.2.2 PFF 알고리즘

  • PFF(Page Fault Frequency) 알고리즘
    • 페이지 부재 빈도(PFF)를 이용하여 프로세스별 페이지 집합의 크기를 변화시키는 기법
    • PFF : 얼마나 자주 페이지 부재로 교체가 발생하는지를 나타내는 척도
      • 페이지 부재가 발생하면 직전 페이지 부재 이후로 경과된 시각의 역수
    • PFF가 상한보다 높으면 : 페이지 프레임 개수를 1 증가
    • PFF가 하한보다 낮으면 : 그 사이에 참조되지 않았던 페이지를 모두 제가
  • 장점
    • 프로세스별 페이지 집합이 워킹 세트 알고리즘처럼 자주 바뀌지 않음
      • 페이지 부재가 발생하고 그때의 PFF가 상한이나 하한을 벗어나는 경우에만 바뀜

참고 문헌 : 김진욱·이인복. 운영체제 워크북. 한국방송통신대학교출판문화원, 2023.

728x90
728x90

9.1 가상 메모리의 개념

  • 가상 메모리(virtual memory)
    • 컴퓨터 시스템의 메모리 크기보다 더 큰 기억공간이 필요한 프로세스를 실행할 수 있게 하는 방법
    • 실행 중인 프로세스에 의해 참조되는 주소(가상주소)를 메모리에서 사용하는 주소(실주소)와 분리하는 것
      • 가상주소 공간 : 실행 프로세스가 참조하는 가상주소의 범위
      • 실주소 공간 : 특정 컴퓨터 시스템에서 사용 가능한 실주소의 범위
  • 사상(mapping)
    • 가상주소를 실주소로 변환하는 과정
  • 동적 주소변환(DAT)
    • 프로세스가 실행되는 동안 가상주소를 실주소로 바꾸는 절차
    • 주소변환 사상표 이용
  • 인위적 연속성
    • 가상주소 공간에서 연속적인 주소가 실주소 공간에서도 연속적일 필요는 없음

9.2 블록 단위 주소변환

  • 항목별(바이트나 워드 단위) 주소변환의 문제점
    • 변환에 필요한 정보량이 너무 많아 비효율적임
  • 블록 사상 시스템
    • 정보를 블록 단위로 구분하여 각 블록이 메모리의 어디에 위치하는지만 관리함
      • 가상주소 v=(b,d)
        • b는 블록 번호, d는 블록의 시작점으로부터의 변위
  • 블록의 크기
    • 커질수록 사상정보 저장에 필요한 메모리양은 작아짐
      • 단점 : 블록 이동에 필요한 전송시간이 늘어나고, 메모리를 공유할 프로세스 수가 줄어듦
    • 작아질수록 블록 전송시간이 줄어들고, 메모리를 공유할 프로세스 수는 늘어남
      • 단점 : 사상정보 저장에 필요한 메모리양이 커짐
  • 블록 구성방식
    • 페이지 : 블록의 크기가 동일함
    • 세그먼트 : 블록의 크기가 다를 수 있음

9.2.1 페이징 기법

  • 페이징 기법
    • 가상 메모리를 페이지 단위로 나누어 관리하는 기법
      • 페이지 : 고정된 크기의 블록
  • 페이지 프레임
    • 가상 메모리와 동일하게 고정된 크기로 분할된 메모리 영역의 블록
    • 가상 메모리상의 페이지를 담을 수 있도록 실제 메모리에 틀(frame)을 만들어 둔 것
  • 페이지 사상표
    • 페이지가 메모리에 적재된 후에도 바로 찾을 수 있도록 프로세스가 사용하는 가상주소를 실주소로 동적 변환 할 수 있게 함
    • 가상주소의 페이지 번호별 저장 정보
      • 실주소의 페이지 프레임 번호
      • 페이지 존재 비트
      • 보조기억장치 주소
  • 동적 주소변환
    • 직접사상 : 페이지 사상표를 직접 이용하여 동적 주소변환을 하는 방식
    • 연관사상 : 페이지 변환 정보를 연관 메모리에 저장한 연관사상표를 이용하여 동적 주소변환을 하는 방식
    • 연관/직접 사상 : 연관사상표에는 가장 최근에 참조된 페이지 항목만 보관하고 나머지는 페이지 사상표에 수록하여, 연관사상표에 없을 때는 직접사상 기법으로 변환하는 방식
  • 페이징 기법의 특징
    • 메모리 보호는 페이지 단위로 이루어짐
    • 외부 단펴화는 발생하지 않으나, 내부 단편화는 발생할 수 있음.

9.2.2 세그먼테이션 기법

  • 세그먼테이션 기법
    • 가상 메모리를 세그먼트 단위로 나누어 관리하는 기법
      • 세그먼트 : 논리적 의미에 부합하는 다양한 크기의 블록
    • 메모리 적재를 위해서는 최초 적합, 최적 적합 등의 방법 이용
  • 세그먼트 사상표
    • 페이지 사상표와 유사함
    • 가상주소의 세그먼트 번호별 저장 정보
      • 실주소의 시작 위치
      • 세그먼트 존재 비트
      • 보조기억장치 주소
      • 세그먼트의 길이

9.2.3 페이징/세그먼테이션 혼용기법

  • 페이징/세그먼테이션 혼용기법
    • 세그먼테이션 기법의 논리적 장점과 페이징 기법의 메모리 관리 측면의 장점을 활용한 기법
    • 각 세그먼트를 다시 페이지 단위로 분할하고 메모리도 페이지 프레임으로 분할하여 하나의 페이지만 페이지 프레임에 적재하는 방식
    • 세그먼트 사상표에 저장되는 주소는 실주소가 아닌 각 세그먼트에 대한 페이지 사상표의 시작주소

9.3 메모리 호출기법

  • 페이지 또는 세그먼트를 어느 시점에 메모리에 적재할 것인가를 결정하는 기법
  • 페이징 기법에서의 호출기법 : 요구 페이지 호출기법, 예상 페이지 호출기법

9.3.1. 요구 페이지 호출기법

  • 요구 페이지 호출기법
    • 페이지 요구가 있을 때 해당 페이지를 메모리에 적재하는 방법
    • 프로세스의 실행순서는 정확히 예측이 불가하므로 실제 참조시 적재
    • 페이지 결정에 대한 오버헤드가 최소화됨
    • 적재된 페이지는 프로세스에 의해 실제로 참조된 것임을 확신함

9.3.2 예상 페이지 호출기법

  • 예상 페이지 호출기법
    • 곧 사용될 것으로 예상되는 페이지를 미리 메모리에 적재하는 방법
    • 예상이 옳았다면 실제로 필요한 시점이 되었을 때 프로세스 실행이 단절되지 않음
    • 예상이 잘못되면 예상 적재에 따른 시간과 메모리 공간의 낭비가 발생함
  • 프로세스 시작 시점에 예상 페이지 호출기법을 적용하면 성능이 개선됨

참고 문헌 : 김진욱·이인복. 운영체제 워크북. 한국방송통신대학교출판문화원, 2023.

728x90
728x90

8.1 프로세스와 메모리

  • 프로세스의 동작
    • 메모리의 특정 위치에서 수행될 명령을 읽어 CPU로 수행하는 것
  • 기억장치 계층구조
    • 적절한 비용으로 높은 서능을 낼 수 있도록 소량의 고속이며 고가인 기억장치와, 대량의 저속이며 저가인 기억장치를 계층적으로 구성
    • 접근속도
      • (빠름) 레지스터 > 캐시 메모리 > 메모리 > 보조기억장치 (느림)
    • 비트당 비용
      • (높음) 레지스터 > 캐시 메모리 > 메모리 > 보조기억장치 (낮음)
    • 당장 사용하지 않는 데이터나 프로그램 등은 보조기억장치 활용
  • 메모리 관리
    • 호출 : 언제 새로운 프로세스를 메모리에 둘 것인가?
    • 배치 : 다음에 수행될 프로세스를 메모리 내의 어느 곳에 둘 것인가?
    • 교체 : 메모리가 꽉 찬 상태에서 새로운 프로세스를 메모리에 적재해야 한다면 어떤 프로세스를 제거할 것인가?

8.2 단일 프로그래밍 환경

  • 단일 프로그래밍
    • 하나의 프로세스만 메모리를 전용으로 사용하는 것
  • 연속 메모리 할당
    • 프로세스는 하나의 연속된 블록으로 메모리에 할당됨
  • 문제점
    • 메모리의 용량을 초과하는 프로세스는 실행하지 못함
    • 지속적으로 사용되지 않는 프로세스도 메모리에 계속 적재되어 있어야 하므로 메모리의 낭비가 심함
    • 한 명의 사용자가 메모리를 전용하므로 주변장치 등 자원의 낭비가 심함

8.3 다중 프로그래밍 환경

  • 다중 프로그래밍
    • 여러 개의 프로세스가 메모리에 동시에 적재되는 것
    • 현재 실행 중인 프로세스가 입출력 대기를 해야 하면 실행을 기다리고 있는 다른 프로세스에 CPU를 할당할 수 있음
    • CPU 연산과 입출력을 동시에 함으로써 CPU 이용도와 시스템 처리량을 증가시킴

8.3.1 메모리 분할

  • 여러 프로세스를 메모리에 적재하기 위한 방법
    • 하나의 부낳ㅇ에 하나의 프로세스가 적재됨
  • 고정 분할
    • 메모리를 여러 개의 고정된 크기의 영역으로 분할하여 프로세스를 배치하는 방식
    • 방법1 : 각 분할영역마다 큐를 두고 큐에 들어온 프로세스는 해당 분할 영역에만 적재됨
      • 컴파일 시 절대주소로 번역
    • 방법2 : 모든 프로세스를 하나의 작업 큐에 넣어서 어느 분할에서든지 실행 가능하게 함
      • 컴파일 시 상대주소로 번역
    • 내부 단편화 발생
      • 프로세스의 크기가 적재된 분할영역의 크기보다 작아서 분할영역 내에 남게 되는 메모리 발생
  • 동적 분할
    • 메모리의 분할경계가 고정되지 않고 각 프로세스에 필요한 만큼의 메모리만 할당하는 방식
    • 외부 단편화 발생
      • 메모리의 할당과 반환이 반복됨에 따라 작은 크기의 공백이 메모리 공간에 흩어져 생기는 것
  • 통합과 집약
    • 외부 단편화를 해결하는 방법
    • 통합 : 인접된 공백을 더 큰 하나의 공백으로 만드는 것
    • 집약 : 메모리 내의 모든 공백을 하나로 모으는 것

8.3.2 메모리 보호

  • 메모리 보호
    • 프로세스가 다른 할당영역을 침법하지 않게 하는 것
    • 프로세스가 사용할 수 있는 주소 범위를 하한-상한 레지스터 쌍 또는 하한-크기 레지스터 쌍의 값으로 제한함
    • 이 제한을 넘어 운영체제를 호출하려면 시스템 호출을 통해야만 가능함

8.4 메모리 배치기법

  • 동적 분할 다중 프로그래밍에서 새로 반입된 프로그램이나 데이터를 메모리의 어느 위치에 배치할 것인가를 결정하는 것
  • 최초 적합
    • 프로세스가 적재될 수 있는 빈공간 중 가장 먼저 발견되는 곳을 할당함
  • 후속 적합
    • 이전에 탐색이 끝난 그다음 부분부터 시작하여 사용 가능한 빈 공간 중 가장 먼저 발견되는 곳을 할당함
    • 최초 적합의 변형
  • 최적 적합
    • 필요한 공간을 제공할 수 있는 빈 공간 중 가장 작은 곳을 선택하여 할당함
    • 큰 빈 공간을 최대한 많이 남겨 놓기 위한 방법
  • 최악 적합
    • 필요한 공간을 제공할 수 있는 빈 공간 중 가장 큰 곳을 선택하여 할당함
    • 작은 자투리가 남아 사용되지 못하는 공간이 발생하는 것을 최소화하기 위한 방법

참고 문헌 : 김진욱·이인복. 운영체제 워크북. 한국방송통신대학교출판문화원, 2023.

728x90
728x90

7.1 교착상태 회피

  • 프로세스의 자원 사용에 대한 사전 정보를 활용하여 교착상태가 발생하지 않는 상태에 머물도록 하는 방법
    • 사전 정보 : 현재 할당된 자원, 가용상태의 자원, 프로세스들의 최대 요구량

7.1.1 안전상태와 안전순서열

  • 안전상태
    • 교착상태를 회피하면서 각 프로세스에 그들의 최대 요구량까지 빠짐없이 자원을 할당할 수 있는 상태
    • 안전순서열이 존재하는 경우로, 교착상태에 빠지지 않고 모든 프로세스가 종료 가능
  • 안전순서열
    • 순서 있는 프로셋의 집합 <p_1,p_2···,p_n>
    • 각 프로세스 p_i는 p_i가 추가로 요구할 수 있는 자원의 양이 다음 주 한가지는 만족한 경우
      • 현재 가용상태의 자원으로 충당 가능
      • 현재 가용상태인 자원에 i>j인 프로세스 p_j에 할당된 자원까지 포함하여 충당 가능
  • 불안전상태
    • 안전순서열이 존재하지 않는 경우
    • 자원의 할당과정에 따라 교착상태가 될 수도 있고 아닐 수도 있음
  • 교착상태는 불안전상태에서만 발생될 수 있음
    • 교착상태를 회피하려면 항상 안전상태를 유지해야 함
      • 프로세스가 가용상태의 자원을 요구하더라도 할당하지 않을 수 있음
    • 자원이용률은 다소 낮아질 수 있음

7.1.2 각 자원의 단위자원이 하나밖에 없을 경우

  • 변형된 자원할당 그래프 이용
    • 단위자원의 개수를 표시할 필요 없음
    • 프로세스가 앞으로 자원을 요구할 것임을 나타내는 선언간선 추가
  • 요구간선에 대한 처리
    • 할당 가능한 경우 : 해당 자원이 가용한 상태이고 할당간선으로 바꿔도 사이클이 생기지 않는 경우
    • 할당 불가능한 경우 : 해당 자원이 가용한 상태가 아니거나, 할당간선으로 바꾸면 사이클이 생기는 경우
      • 사이클 -> 안전순서열이 존재하지 않음 -> 불안전상태

7.1.3 각 자원의 단위자원이 여러 개일 경우

  • 은행원 알고리즘 이용
    • 자원을 요구받으면 그 자원을 할당해 주고 난 후의 상태를 여러 데이터를 이용하여 계산해서 그것이 안전상태인지 확인한 후 안전상태가 보장 되는 경우에만 자원 할당

7.2 교착상태 탐지 및 복구

  • 사후처리 방법
    • 주기적으로 탐지 알고리즘을 수행하여 교착상태가 발생한 경우를 탐지함
    • 탐지한 교착상태를 적절한 조치를 통해 정상상태로 복구함

7.2.1 탐지

  • Shoshani와 Coffman 알고리즘
    • 은행원 알고리즘의 안전 알고리즘과 유사함
    • 현재 상태의 모든 자원 요구량을 고려하여 교착상태 여부 확인
  • 탐지 시점
    • 즉시 받아들일 수 없는 자원 요구가 있을 때
    • 정해진 시간간격마다
    • CPU 효율이 일정 수준 이하로 떨어질 때

7.2.2 복구

  • 복구의 주체
    • 오퍼레이터
    • 운영체제
  • 복구방법
    • 교착상태 프로세스 종료
      • 모든 교착상태 프로세스 종료
      • 사이클이 제거될 때까지 프로세스를 하나씩 종료시킴
    • 교착상태 프로세스가 할당받은 자원 해제
      • 사이클이 제거될 때까지 할당된 자원을 단계적으로 선점함
  • 복구 후 다시 교착상태 발생 가능
    • 이런 상황이 반복되면 해당 프로세스는 기아상태가 됨
    • 복구를 위한 프로세스 선택 시 복구 횟수를 고려함

 

참고 문헌 : 김진욱·이인복. 운영체제 워크북. 한국방송통신대학교출판문화원, 2023.

728x90
728x90

6.1 교착 상태의 개요

  • 교착상태(deadlock)
    • 여러 개의 프로세스가 서로 상대방의 작업이 끝나기만 기다리고 있기 때문에 결과적으로 어느 쪽도 영원히 진행하지 못하는 상태
  • 교착상태와 기아상태의 차이
    • 교착상태 : 관련된 모든 프로세스가 자원획득의 가능성 없이 무한히 대기상태인 것
    • 기아상태 : 관련된 프로세스의 일부가 자원획득의 가능성은 있으나 계속 적으로 대기상태인 것

6.2 교착상태의 특성

6.2.1 교착상태의 필요조건

  • 상호배제(mutual exclusion) 조건
    • 프로세스가 자원에 대한 배타적인 통제권을 요구하는 조건
    • 필요로 하는 자원을 다른 프로세스가 점유하고 있으면 반드시 대기해야 함
  • 점유대기(hold and wait) 조건
    • 프로세스가 이미 한 자원을 할당받아 점유하고 있는 상황에서 다른 프로세스가 점유하고 있는 또 다른 자원을 요청하여 해제되기를 기다리는 상황
  • 비선점(no preemption) 조건
    • 프로세스에 할당된 자원은 그 프로세스가 사용을 마치고 스스로 반환하기 전에는 해제되지 않음
  • 환형대기(circular wait) 조건
    • 프로세스의 자원 점유 및 점유된 자원의 요구관계가 환형을 이루며 대기하는 상황

6.2.2 자원할당 그래프

  • 자원할당 그래프 G=(V,E)
    • V = ∪ R : 정점의 집합
      • P = {p_1,p_2,···,p_n} : n개의 프로세스
      • R = {r_1,r_2<···,r_m} : m개의 자원
    • E = Q∪S : 방향 있는 간선의 집합
      • Q={(p_i,r+j)|p_i∈P,r_j∈R) : 프로세스 p_i가 자원 r_j를 요구하는 요구간선
      • S={(r_j,p_i)|r_j∈R,p_i∈P) : 자원 r_j가 프로세스 p_i에 할당되어 있는 할당간선
  • 자원할당 그래프와 교착상태의 관계
    • 자원할당 그래프에 사이클이 없으면 교착상태가 존재하지 않음
    • 자원할당 그래프에 사이클이 있으면 교착상태가 발생할 수도 있고 아닐 수도 있음

6.2.3 교착상태의 처리기법

  • 교착상태 예방(prevention)
    • 교착상태의 네 가지 필요조건이 동시에 만족되는 것을 피함으로써 교착상태가 발생하지 않도록 하는 방법
  • 교착상태 회피(avoidance)
    • 프로세스에 필요한 자원의 최대량에 대한 정보를 이용하여 교착상태가 발생하지 않도록 하는 방법
  • 교착상태 탐지 및 복구(detection and recovery)
    • 교착상태의 발생 여부를 조사하여 발생한 경우에는 적절한 조치를 취해 정상상태로 복구하는 방법

6.3 교착상태 예방

6.3.1 상호배제 조건 제거

  • 공유할 수 있는 자원은 상호배제를 할 필요가 없으므로 교착상태를 유발하지 않음
  • 공유할 수 없는 자원은 반드시 상호배제를 따라야만 하므로 사실상 상호배제 조건을 제거하여 교착상태를 방지하는 것은 불가능함

6.3.2 점유대기 조건 제거

  • 자원을 점유했을 때 대기하지 않도록 함
    • 프로세스가 앞으로 필요한 모든 자원을 처음에 한꺼번에 요구하여 할당 받음
    • 단점
      • 자원이용률이 낮아질 수 있음
      • 기아상태 발생 가능
  • 대기할 때 자원을 점유하고 있지 않도록 함
    • 새로운 자원을 요구할 때는 먼저 할당받았던 자원을 모두 해제함
    • 단점
      • 점유 도중 해제할 수 없는 자원에는 적용 불가
      • 기아상태 발생 가능

6.3.3 비선점 조건 제거

  • 자원을 선점 가능하도록함
    • 단점 : 자원의 특성에 따라 불가능한 경우도 있으므로 완벽하게 제거 불가
  • 자원을 점유한 프로세스가 다른 자원을 요구할 때 대기가 발생한다면, 할당받았던 자원을 모두 해제하여 다른 프로세스가 비선점 조건으로 대기할 가능성을 줄이는 방법
    • 단점 : 점유 도중 해제할 수 없는 자원에는 적용 불가

6.3.4 환형대기 조건 제거

  • 모든 자원에 일련번호 지정
    • 함수 f : 각 자원을 서로 다른 자연수로 지정
  • 방법 1 : 프로세스는 자원을 요구할 ㅐ 일련번호 기준으로 항상 오름차순이 되도록 요구함
  • 방법 2 : 프로세스가 자원을 요구할 때 그보다 일련번호가 큰 자원은 점유하고 있지 않도록 함
  • 점유대기 중인 프로세스는 항상 점유하고 있는 자원의 일변번호보다 대기중인 자원의 일련번호가 크므로 환형대기 발생 불가
  • 단점
    • 자원의 일련번호 설정에 어려움이 있음
    • 일련번호가 큰 점유 중인 자원을 해제해야 하는 경우, 해제가 불가능한 자원에는 적용 불가

 

참고 문헌 : 김진욱·이인복. 운영체제 워크북. 한국방송통신대학교출판문화원, 2023.

728x90

+ Recent posts