• 리눅스 마스터 1부 : 운영체제의 개요

    2019. 1. 9. 14:18

    by. 위지원

    리눅스 마스터 1급 표준교재 (2005)
    국내도서
    저자 : 한국정보통신인력개발센터
    출판 : 사이텍미디어 2005.06.20
    상세보기


    1.운영체제의 개요


    1-1. 운영체제의 이해


    운영체제(Operation System)은 하드웨어적인 장치들이 제대로 운영되기 위해선 연결장치들을 통제하고 관리할 수 있는 체제를 말한다.


    운영체제는 아래와 같은 일을 한다.

    1. 하드웨어와 응용프로그램간의 인터페이스 역할

    2.CPU,주 기억 장치, 입출력 장치등의 자원 관리



    핀란드의 헬싱키 대학을 다니던 리누스 토발즈씨는 유닉스에서 아이디어를 얻어 개발하였다. Git도 이사람이 만들었다고.아아..그는 대체 91년 11월 버전 0.10이 공개되어 확대,보급 되었다. 유닉스는 중대형 컴퓨터에서 쓰였지만, 리눅스는 개인 컴퓨터에서도 활용되었다. 지금은 다양한 플랫폼에서 쓰이는 중


    파일구성이나 시스템 기능의 일부는 유닉스 기반이고 핵심 커널 부분은 유닉스와 다르게 작성되어있다.


    자꾸 유닉스~유닉스하니까 유닉스를 알아보자.


    1960년대 초에는 컴퓨터가 단일 작업을 실행하는 일괄처리모드(Batch Mode)로 동작하였다. 프로그래머들은 자신들의 프로그램을 입력하기 위해 펀치카드를 이용하였고 라인 프린터상에서 출력하기 위해 기다려야 했다. 유닉스 운영체제는 프로그래머들의 불만과 그들을 돕기 위한 새로운 컴퓨팅 툴이 필요한데 대한 응답으로 1969년에 탄생하였다.

    [출처] 유닉스란|작성자 불량너구리


    펀치카드는 아래와 같이 생겼다.

    파일:attachment/천공 카드/001.jpg



    장점은

    1. 인터넷 프로토콜인 TCP/IP[각주:1]를 강력하게 지원하는등의 네트워킹에 강점을 지님

    2. 유닉스와 거의 유사한 환경을 제공

    3. 오픈소스로인터넷을 통해 무료로 제공


    1-1-1. 개념


    운영체제를 역할 중심으로

    1. 자원 할당자

    2. 제어 프로그램

    으로 부를 수 있다.


    운영체제의 주요 역할은

      • 하드웨어를 제어하고 사용자들간 하드웨어 자원 공유를 가능토록한다.

      • 시스템 자원 스케쥴링
      • 입출력의 용이를 위한 기능 제공
      • 응용프로그램의 작성/실행의 편리함 제공
      • 오류의 발생을 막고 복구를 지원
      • 데이터의 조직화, 네트워크 통신 처리 기능의 수행
      • 편리한 사용자 인터페이스 제공

    운영체제를 구성하는 요소는
      • 제어 : 시스템을 웅영하기 위한 기능 수행 ex) supervisor,데이터 관리, 작업관리
      • 처리 : 작업을 수행하기 위한 기능을 지원 ex) 언어 번역,서비스 프로그램

    시스템 성능은 다음 4가지의 요소로 나타낼 수 있다.



    최근(2005년 책이니까..20세기...기준....) 운영체제의 특징

    1. 다중 사용자 시스템

    2. 다중 작업 시스템

    3. 강력한 네트워킹

    4. 편리한 사용자 인터페이스

    5. 계측정 파일 관리 시스템 : 디렉토리 및 파일의 관리가 용이하고, 탐색과 처리가 쉽고 효율적

    6. 가상 메모리 ; 실제 RAM 용량의 부족을 해결하거나 주기억장치의 용량증대 효과제공

    7. 고성능 프로세서에 최적화

    8. 개방형 운영체 및 뛰어난 이식성


    운영체제의 역사


    운영체제의 유형은 아래와 같은 유형들이 존재 한다.
      • 다중 교환 : 다수의 작업이 동시에 실행 되거나 foreground program만 실행
      • 단일 작업
      • 다중 작업 : 한 사용자가 여러개의 작업을 동시에 수행
      • 다중 사용자 : 단일 프로세서 시스템에서 여러 사용자의 프로그램이 실행
      • 대화형 처리 : 시분할 처리 기능이 필요함
      • 일괄 처리
      • 실시간 처리
      • 가상 기계 : 컴퓨터 시스템을 마치 여러 대의 작은 컴퓨터 시스템이 있는 것처럼 분할
      • 분산 처리
      • 병렬 계산
    시스템 프로그램 ; 사용자가 컴퓨터를 사용할 떄 편리하게 이용할 수 있도록 기능을 제공하는 프로그램들

    1. 어셈블러 : 저급 언어인 어셈블리어로 작성된 프로그램을 기계어로 번역하는 프로그램으로 결과는 로더가 실행 할 수 있도록 목적 프로그램을 만들어준다.

    2. 매크로 프로세서 : 매크로 호출을 매크로 정의로 바꾸어 주는 프로그램이다. 말그대로 시스템에서 자주사용되는 기능을 매크로로 미리 작성하고 필요할때마다 호출하면 원시 프로그램에 확장 삽입되는 연속 코드를 말한다.

    3. 로더 : 어떤 프로그램을 실행하기 위해서 그 프로그램의 명령문들과 데이터들을 주기억장치에 놓아두는 프로그램이다.
    3-1. 절대 로더 : 기계어 코드 프로그램이 가리키는 정확한 번지에 명령문과 데이터를 적재
    3-2. 재배치 로더 : 로드할 당시 주기억 장치내의 사용 가능한 어느 공간이라도 적재가 가능
    로더는
    1. 목적 프로그램을 메모리에 적재
    2. 적재 위치를 변경하기 위해 재배치
    3. 연결(Link-edit)
    로더가 명령문과 데이터를 주기억장치로 옮기는 것을 바인딩이라고 한다.

    4. 컴파일러 : 고급 언어로 된 원시프로그램을 분석해서 대응되는 목적 프로그램을 생성한다. 원시 프로그램을 분석하고 문법적 오류를 찾아낸다.

    5. 운영체제


    1-1-3. 기억 장치 관리

    1. 기억장치 (주기억장치(휘발)+보조기억장치(비휘발))

    1) 캐시 기억 장치의 개념  CPU와 주기억 장치 사이에 위치하며 주기억 장치의 데이터를 고속으로 CPU에 제공
        • 접근 속도가 빠르고 비싸며 주기억 장치보다 용량이 작다.
        • 주기억 장치의 일부 내용을 복사해 놓는다
        • CPU가 실제적으로 참조하는 메모리이다.
    2) 기억 장치를 관리하기 위해서는.
        • 재배치 : 프로그램의 주소를 동적으로 재배치 한다.
        • 보호 : 사용자의 사용 영역간의 동기화를 보장해야한다.
        • 공유 : 기억 장치의 특정부분을 여러 프로세스가 공유한다.
        • 논리 구조 : 정보 블록의 크기가 일정한 모듈과 크기가 일정하지 않은 세그먼테이션으로 [각주:2]구성한다.
        • 물리 구조 : 주기억 장치와 보조 기억장치, 휘발성 메모리와 비활성 메모리로 특성이 구분된다.

    3) 기억 장치 관리 기법
        • 호출 기법(Fetch) : 보조기억 장치로부터 페이지나 [각주:3]세그먼트를 인출한다; 요구 호출과 예상 호출
        • 배치 기법(Placement) : 페이지나 세그먼트가 적재될 위치를 결정한다; 최초 적합,최적 적합,최악 적합
        • 교체 기법(Replacement) : 페이지나 세그먼트 중의 하나를 제거한다. ; 최적화 원칙, 무작위 페이지 교체, FIFO,LRU,LFU,NUR,2차 기회,국부성

    * 밑줄친것들은 뒤에서 설명


    2. 분할 기억 장치 관리 ; 하나의 시스템에 여러개의 프로그램이 적재되어 실행될때 기억장소의 분할과 관리방법은
    1) 다중 연속 고정 분할 방법 : 프로그램이 주기억 장치에 적재 되는 주소가 고정되어있고 경계 레지스터가 하한/상한의 주소를 가르키며 분할 영역의 크기를 나타내고 있으며 초기 다중 프로그래밍에서 쓰이던 방식이다.

    2) 다중 연속 가변 분할 방법 : 각 작업의 크기에 따라 분할 영역을 할당

    3) 기억 장소 배치 기법
        • 최초 : 최초로 수용 가능한 기억 공간을 할당
        • 최적 : 수용 가능 한 공간 중에 가장 작은 공간
        • 최악 : 수용 가능 한 공간 중에 가장 큰 공간

    기법 

    장점

    단점

    최초

    • 탐색시간이 빠르다.
    • 기억 공간의 정렬이 필요없다.
    • 공간을 쪼개서 사용하는 경우가 생긴다.

    최적

    • 평균 탐색 시간은 1/n
    • 공간을 쪼개서 쓰는 경우가 적다
    • 공간이 크기순으로 정렬되어있어야 한다.

    최악

    • 가장 큰 기억 공간을 할당하므로 나중에 큰 기억장소가 필요할때 유용하다(...?)
    • 정렬된데서 제일 큰곳에 넣으면 되므로 탐색시간이 빠르다
    • 공간이 크기순으로 정렬되어있어야 한다.



    3. 재배치 분할 기억 장치 관리 ; 기억장소를 할당하는 과정중에 작은 기억공간의 조각(Fragment)가 발생해 버린다. 이런 공간을 압축하거나 가비지 컬렉터에 의해 제거된다.
    1) 압축 : 작게 남은 공간들을 하나로 압축한다. 이러한 과정을 가비지 컬렉션이라고 한다.
    2) 재배치 레지스터 이용
        • 다중 분할 된 메모리를 관리하고 각 프로세스의 시작 주소와 경계에 대한 정보를 갖는다.
        • 분할 기억 장소의 경계를 나타내는 레지스터 값을 Base-Bound Relocation이라고 하는 데 이 값을 조정하여 프로세스의 적재 위치를 동적으로 재배치한다.
    3) 집약의 장점과 단점

        • 장점 : 조각을 모을 수 있다.
        • 단점

    1. 시스템 자원을 소비해서 행해진다.

    2. 집약시 다른 프로그램을 중지해야한다.

    3. 재배치 관련 정보의 유지 관리가 매우 복잡하다.


    4. 가상 기억장치
    아래와 같은 특성과 주소 개념을 갖는다.
    • 인위적 연속성 : 프로세스의 가상 주소 공간에서 연속인 주소가 실주소에서 연속일 필욘 없다.
    • 가상 주소 : 실행프로세스가 참조하는 주
    • 실 주소 : 주 기억 장소에서 사용할 수 잇는 주소
    • 가상 주소 공간 : 실행 프로세스가 참조하는 가상 주소의 범위
    • 실주소 공간 : 특정 컴퓨터에서 사용 가능한 실주소의 범위
    • 동적 주소 변환 (DAT:Dynamic Address Translation) : 가상 기억장소의 위치가 실기억 장치로 변환하는 과정
    • 가상 기억 공간을 구현하 귀한 알고리즘 :  작업표, 메모리 블럭표, Page Map Table 3가지가 처리되어서 알고리즘이 구현되어야 한다.
    1) 페이지 기억 장치 관리 ; 가상 기억 공간을 구현하기 위하여 메모리를 일정한 크기의 페이지 프레임(Frame)으로 분할하고 Page Map을 이용해서 실 주소 공간을 가상 주소 공간으로 매핑시키는 관리 기법이다.
        • 장점 : 메모리 조각화의 염려가 없고연산에 의해서 기억장소를 구현
        • 단점 : 빈번한 페이지 스레딩과 내부단편화

    관련 용어 및 개념은 아래와 같다.
        • 블럭(Block) : 인위적으로 구성한 정보의 분할 단위
        • 페이지(Page) : 블록의 크기가 일정한 블럭
        • 페이징(Paging) : 페이지를 이용한 가상 기억 장소 구성 방법
        • 페이지 매핑(Page Mapping) : 페이지를 이용한 가상 기억 장소와 실기억 장소의 주소 변환 방법
        • 변위(Displacement) :  블록이 시작 부분부터 항목까지의 상대적인 주소
        • PMT(Page Map Table) : 페이지 블록들의 목록이 작성된 리스트
    2) 세그먼트 기억 장치 관리 ; 세그먼트는 크기가 다른 세그먼트 프레임을 사용하는 방법이다.
        • 장점 : 내부 단편화를 줄일수 있으며 세그먼트 맵을 이용해서 고속 주소 계산 가능
        • 단점 : 크기가 모두 다르기때문에 정보를 별도로 관리해야하고 빈번한 세그먼트 적재/교체가 발생할 수 있음

    관련 용어 및 개념은 아래와 같다.
        • 세그먼트 : 정보 블록의 크기가 다른 블럭
        • 세그먼트 기법 : 세그먼트를 이용한 가상 기억 장소 구성 방법
        • 기억 장치 보호 키(key) : 경계 레지스터 대신 사용자별로 고유한 CPU 기억 장치 보호키를 이용하여 타 영역에 대한 액세스를 방지 *엑세스 제어 형태는 Read,Write,Execute,Append가 있다.
    3) 세그먼트기법의 특징
        • 단편화 제거
        • 가상 기억장치 제공
        • 동적 증가 세그먼트 허용
        • 동적 연결과 로드
        • 공유 세그먼트
        • 통제 접근
    4) 요구 세그먼트 방법 ; 해당 세그먼트에 엑세스 요청이 있는 경우에만 세그먼트를 교체한다. 사용자 프로그램이 매우 커야 유리하고 세그먼트 부재가 발생해야 교체하므로 속도가 느리다(...? 자꾸 이상한..?)
        • 장점 : 사용자 프로그램이 실 기억 장소보다 큰 경우에도 처리 가능하다
        • 단점 : 가상 기억장치를 구현하기 쉽지 않고 부주의하게 이용되면 부수적으로 활용도가 감소된다(대체 문장이 왜이런..?)
    5) 교환
        • 아웃(Roll-out) : 교체되는 페이지를 제거
        • 롤인(Roll-In) : 신규페이지를 적재
        • 문맥교환(Contect Switch) : 페이지를 서로 교체하기 위해 문맥을 저장하고 재적재 하는것

    5.요구 페이지 기억 장치 관리

    1) 요구 페이지 방법
    이 방법은 액세스 요구가 발생하면 그때 해당 페이지를 기억 장소에서 읽어 들이는 방식으로 특징은
    • 프로그램의 수행에 최소한의 페이지로 실행이 가능
    • 동일 기억 장소에 많은 프로그램을 실행시킬 수 있음
    • 스레싱 : 빈번하게 페이지 부재가 발생해서 해당 페이지의 잦은 교환으로 페이징이 매우느려지는 현상
    2) 요구 페이징 순서

    6.페이지 교체 알고리즘

    1) 최적화 원칙
    가장 오랫동안 사용되지 않을 페이지를 교체;예측하는 것은 불가능하다.

    2) 무작위 페이지 교체
    알고리즘은 매우간단하고 교체 가능성이 모든 페이지가 동등하다; 최악의 경우 바로 뒤에 참조될 페이지가 교체 될 수 있다.

    3) FIFO(First-In First-Out)
    먼저 적재된 페이지를 제거한다; 가장 오랫동안 적재된 페이지가 사용될 가능성이 높으므로 바람직하진 않다. 프레임 수를 늘려도 페이지 부재가 늘어나는 문제가 발생할 수 있다.

    4) LRU(Least Recently Used)
    최근에 가장 적게 사용된 페이지를 제거한다;페이지의 사용시간과 같은 정보를 관리해야하는 오버헤드가 발생한다. 순환문일경우 가장 오래전에 참조한페이지를 바로 다음에 참조할 페이지일 수 있음

    5) LFU(Least Frequently Used)
    사용빈도가 적은 페이지를 제거한다;참조회수만 관리하므로 알고리즘이 간단하고 쉽다.최악의 경우 가장 나중에 적재된 페이지가 계속 참조되어야 하는데 참조 횟수만으로도 제거가 되어버린다.


    6) NUR(Not Used Resently) ; LRU의 변형
    최근에 사용되지 않은 페이지를 교체한다. 참조비트와 변형 비트 사용; 모든 페이지가 변형 된 경우에는 임의의 페이지를 교체한다.

    *변형비트는 말그대로 페이지가 변형이 되었는지 안되어있는지?를 표시하는 비트이다.

    7) 2차 기회
    첫번째 페이지가 부재가 발생하면 점(point..?)과 같은 것으로 표시하고 두번째는 교체하는 것이다. 첫번째는 RR방식으로 순환 그후로는 일반 태그 (Round Robin..?); 알고리즘이 단순하고 오버헤드가 비교적 적다.

    8) 국부성
    공간적으로 인접하지 않은 프레임을 교체하는 방법이다.;시간국부성(순환,서브루틴,스택 등) 공간 국부성(배열,순차 실행 등)

    1. TCP/IP(TCP (Transmission Control Protocol)/IP (Internet Protocol)) 는 가장최근에 발명된 컴퓨터와 컴퓨터간의 지역네트워크(LAN) 혹은 광역네트워크(WAN)에서 원할한 통신을 가능하도록 하기 위한 통신규약(Protocol) [본문으로]
    2. 세그먼테이션 시스템(Segmentation System)는 분할되는 프로그램 블록들을 세그먼트라 하며, 각 세그먼트들의 크기는 서로 다르게 되는 것이다. 크기가 다르기 때문에 주기억장치 영역을 페이징 시스템에서와 같이 미리 분할해 둘 수는 없으며, 주기억장치에 적재될 때 빈 공간을 찾아 할당하는 기법이다. [본문으로]
    3. 페이지는 고정된 크기로 나누고 세그먼트는 서로 다른 크기로 나눈다. [본문으로]

    대화의 장 💬