우봉수
2023. 3. 13. 14:17
2023. 3. 13. 14:17
저장장치 계층 구조
- 저장장치 시스템은 다음과 같은 조건으로 계층 구조를 형성함
- 캐싱: 더 빠른 저장장치로 정보를 복사하는 기법, 메인 메모리를 보조 저장장치의 캐시로 볼 수 있음
- 입출력을 관리하기 위해 장치마다 장치 드라이버가 존재
- 제어기와 커널 사이의 일관된 인터페이스를 제공
캐싱
- 더 빠른 저장장치로 정보를 복사하는 기법, 메인 메모리를 보조 저장장치의 캐시로 볼 수 있음
- 중요한 원칙
- 하드웨어, 운영체제, 소프트웨어 등 컴퓨터의 많은 레벨에서 수행된다.
- 사용 중인 정보는 느린 장치에서 빠른 장치로 임시적으로 복사된다.
- 빠른 저장장치(캐시)는 우선 원하는 정보가 이미 존재하고 있는지 점검한다
- 존재하면, 캐시에서 직접 사용된다.
- 존재하지 않으면, 데이터를 캐시로 가져와서 캐시에서 사용된다.
- 캐시는 데이터가 오는 소스 저장장치 보다 용략은 적다
- 캐시 관리는 중요한 설계 사항
- 캐시 용량과 교체 정책
직접 메모리 접근 구조
- 메인 메모리 속도에 근접한 속도로 정보를 전송할 수 있는 고속 입출력 장치를 위해 사용되는 기법
- 장치 제어기는 데이터 블록을 장치의 버퍼에서 메인 메모리로 CPU를 개입시키지 않고 직접 전송한다.
- 바이트가 전송될 때마다 인터럽트를 발생시키지 않고 블록의 전송이 끝날 때마다 하나의 인터럽트만 발생시킨다.
- 입출력 장치가 동시에 메모리를 입출력하는 경우는 없다.
컴퓨터 시스템 구조
- 대부분의 시스템은 하나의 범용 CPU를 사용한다
- 대부분의 시스템은 또한 전용 CPU도 가지고 있다
- 다중처리기 시스템의 사용과 중요성이 점점 증가하고 있음
- 병렬 시스템, 밑결합 시스템이라고 불림
- 장점
- 증가된 처리량
- 규모의 경제
- 증가된 신뢰성: 우하한 퇴보 또는 결함 허용
- 두 가지 형태
- 비대칭 다중처리: 각 처리기가 특별한 임무를 수행한다.
- 대칭 다중처리: 각 처리기는 공통적인 임무를 수행한다.
대칭 다중처리 구조
- 캐쉬를 사용해서 빠르게 데이터를 접근이 가능
- 외부버스를 공용하기 때문에 불편한 순간이 존재
- 한개의 버스를 이용하여 CPU가 공통의 메모리에 순차적으로 접근(동시 접근은 불가능)
이중 코어 디자인
- 내부의 캐시를 통해 데이터를 공유 하는 가능 (단 상대적으로 열을 더 많이 발생)
- 한개의 버스를 이용하여 CPU가 공통의 메모리에 순차적으로 접근 할 때 생기는 오버헤드를 줄일 수 있다.
클러스터 시스템
- 다중처리기 시스템과 같이 여러 개의 시스템도 같이 작업할 수 있다
- 보통 storage-area network (SAN)를 통하여 저장장치를 공유
- 실패해도 지속할 수 있는 고가용 서비스 제공
- 비대칭 클러스터링에서는 기기하나가 대기 상태로 들어가 다른 기기들이 사용하다 문제가 발생하면 대기 상태가 해제되어 해당 문제를 해결하는데 사용
- 대칭 클러스터링에서는 모든 기기들이 응용프로그램을 실행하고 서로를 모니터링함
- 일부 클러스터는 고성능 컴퓨팅 환경을 제공
- 응용프로그램은 병렬처리가 가능하도록 작성되어야 함
- 일부 클러스터는 분산 락 관리자를 제공하여 상충하는 연산을 피한다
운영체제 구조
- 다중프로그래밍(일괄처리 시스템: 순차적으로 처리)은 효율이 중요
- 메인메모리에 여러 사용자 프로그램이 상주 가능한 것
- 한 명의 사용자가 CPU와 입출력 장치를 항상 작동하게 만들 수 없다.
- 다중프로그래밍은 CPU가 항상 하나의 작업을 수행할 수 있도록 여러 작업들을(코드와 데이터)배치한다.
- 전체 작업의 부분집합이 메모리에 적재되어 유지된다
- 작업 스케줄링이 실행할 작업을 선택한다
- 실행 중인 작업이 무언가를 기다려야 한다면 운영체제는 다른 작업으로 전환한다.
- 따라서 사용자는 각 직업과 상호 작용 할 수 있고 대화식 컴퓨팅 환경을 만들게 된다.
- 응답시간: 1초 미만이어야 한다
- 각 사용자는 메모리에 실행 중인 프로그램(프로세스)을 적어도 하나는 가지고 있어야 한다.
- 동시에 여러 작업이 실행할 준비가 되어 있다면 → CPU scheduling
- 배치: 배치 처리 시스템은 큐 자료구조와 같은 FIFO 방식이며 한번데 등록된 여러 프로그램들을 컴퓨터 프로그램의 실행 요청 순서에 따라 순차적으로 실행하는 방식이다.
- 시분할: CPU가 빈번하게 다른 작업으로 전환하도록 논리적으로 확장한 것
- 프로세스를 전부 메모리에 적재할 수 없다면메모리에 들이거나 내보낸다(스와핑)
- 가상메모리는 전체가 메모리에 적재되지 않은 프로세스의 실행을 가능하게 한다.
운영체제 연산
- 인터럽트 구동
- 장치가 발생시키는 하드웨어 인터럽트(우선 순위 높음)
- 약간의 여유가 있음 기존에 하던 일을 마치고 처리함 (중요성 상대적으로 낮음)
- 소프트웨어 인터럽트(exception or trap): (우선 순위 낮음)
- 해당 exception 발생시 하던 일을 도중에 그만두고 해당 exception을 처리해야 함 (중요성 상대적으로 높음)
- 소프트웨어 오류
- 운영체제 서비스 요청
- 다른 프로세스 문제
- 이중 모드 연산은 OS가 자기자신을 다른 시스템 구성요소로부터 보호할 수 있게 한다
- User mode(유저 모드) and kernel mode(커널 모드)
- Mode bit(하드웨어가 제공)
- 시스템이 사용자 코드 혹은 커널 코드를 실행하고 있는지 구분할 수 있게 만든다
- 일부 명령어는 특권 명령어로 지정되어 있어 커널 모드에서만 실행가능하다
- 시스템 호출은 모드를 커널 모드로 전환하고 호출에서 복귀할 때 사용자 모드로 되돌아 간다
- 다중 모드 연산을 지원하기 위해서 CPU의 지원이 더 필요하게 됨
사용자 모드에서 커널 모드로 변환
- 커널모드에 접근 할 수 있는 최대 프로세스의 개수는 최대 한 개 밖에 되지 않는다 따라서 타이머가 필요
- 무한 루프, 프로세스 자원 독점을 방지하기 위한 타이머
- 일정 주기마다 컴퓨터에 인터럽트를 발생시키도록 타이머 세팅
- 물리적인 클럭에 의해 감소되는 카운터 유지
- 운영체제가 카운터 세팅(특권 명령어)
- 카운터가 0이 되면 인터럽트 발생
- 스케줄링 프로세스가 제어권을 다시 획득하기 전에 혹은 할당된 시간을 모두 소모한 프로그램을 종료시키기 전에 셋업되어야 함
프로세스 관리
- 프로세스는 실행 중인 프로그램이다. 시스템 안에서 작업의 단위가 된다. 프로그램은 수동적인 개체이고 프로세스는 능동적인 개체이다.
- 프로세스는 자신의 업무를 수행하기 위해서는 자원이 필요하다
- CPU, 메모리, I/O, 파일
- 초기화를 위한 데이터
- 하나의 프로세스는 여러개의 스레드가 존재 할 수 있다.
- 프로세스가 종료될 때에는 재사용이 가능한 모든 자원을 반납해야 한다.
- 단일 스레드 프로세스는 하나의 프로그램 카운터를 가진다
- 프로그램 카운터는 다음에 실행할 명령어의 주소를 저장한다
- 프로세스는 명령어를 순차적으로 한 번에 하나씩 완료될때까지 실행한다
- 다중스레드 프로세스는 스레드 마다 하나의 프로그램 카운터를 가진다
- 보통 시스템에는 많은 프로세스가 존재한다.
- 일부는 사용자 프로세스, 일부는 운영체제 프로세스
- 이들은 하나 이상으 CPU에서 실행된다
- CPU를 프로세스/스레드에 다중 배정함으로써 병행성을 얻는다.
프로세스 관리 활동
- 사용자와 시스템 프로세스를 생성하고 제거하기
- 데드락 상태(프로세스 들이 영원히 교착상태)일때는 프로세스 제거가 필요함
- 프로세스의 실행을 중단시키고 다시 시작시키기
- 프로세스끼리 동기화 할 수 있는 기법 제공
- 프로세스끼리 통신할 수 있는 기법 제공
- 교착상태를 처리하기 위한 기법 제공
메모리 관리
- 프로그램을 실행하기 위해서는 명령어 전체 혹은 일부가 메모리에 있어야 한다.
- 프로그램 실행에 필요한 데이터 전체 또는 일부가 메모리에 있어야 한다
- 메모리 관리는 프로그램의 어느 부분이 언제 메모리에 적재될 것인지 결정
- CPU 이용률을 최적화 하고 사용자에게 빠른 응답시간을 보장해야 위해
- 메모리 관리 활동
- 프로세스에 의해 사용 중인 메모리 영역 추적
- 어느 프로세스와 데이터를 메모리에 적재하거나 내보낼지 결정
- 필요에 따라 메모리를 할당하고 반환
저장장치 관리
- OS는 저장장치의 일관되고 논리적인 모습 제공
- 물리적인 특성을 제거하여 논리적인 저장 단위인 파일 제공
- 각 매체는 장치에 의해 제어된다(드라이버)
- 접근속도, 데이터 전송률, 접근 방식 등 다양한 속성이 있음
- 파일시스템 관리
- 파일은 보통 디렉터리 단위로 구성도니다
- 접근 제어는 누가 무엇에 접근할 수 있는지 결정한다
- 운영체제의 활동은 다음과 같다
- 파일과 디렉터리 생성과 삭제
- 파일과 디렉터리를 조작하기 위한 기본 기능 제공
- 파일을 보조 저장장치에 매핑
- 신뢰할 수 있는(비휘발성) 저장장치에 파일 백업하기
대용량 저장장치 관리
- 오랜 시간 동안 보존해야 할 데이터를 디스크에 저장한다
- 컴퓨터 연산의 전체 속도는 디스크 서브시스템과 알고리즘에 전적으로 달려 있다
- 운영체제 활동
- 일부 저장장치는 빠를 필요가 없다
- 3차 저장장치에는 optical storage, magnetic tape 등이 있다
- 물론 운영체제와 응용프로그램이 관리해야 한다
- 다양한 저장 매체가 존재
- WORM: 한번 작성하면 여러번 읽을 수 있다.
- RW: 읽고 쓰기가 가능
입출력 서브시스템
- OS의 목적 중 하나는 하드웨어 장치의 특이점을 사용자에게 숨기는 것이다
- I/O 서브 시스템의 임무
- 버퍼링(데이터 전송 중 임시 저장)
- 캐싱(성능 향상을 위해 더 빠른 저장소에 데이터 자장)
- 스풀링(한 작업의 출력과 다른 작업 입력의 중첩)을 포함한 I/O 메모리 관리
- 범용 장치 드라이버 인터페이스
- 특정 하드웨어 장치 드라이버
보호와 보안
- 보호: OS에서 정의한 리소스에 프로세스 또는 사용자가 엑세스하는 것을 제어하는 모든 메커니즘
- 보안: 내부 및 외부 공격에 대한 시스템 방어
- 서비스 거부, 윔, 바이러스, 신분 도용, 서비스 절도 등 큰 범위
- 시스템은 일반적으로 사용자를 구분하여 누가 무엇을 할 수 있는지 결정한다
- 사용자 식별자에는 이름 및 연동된 번호가 있고 사용자 당 하나씩 할당된다
- 엑세스 제어를 결정하기 위해 해당 사용자의 모드 파일과 프로세스에 사용된 ID가 연결된다.
- 그룹 식별자 (그룹 ID)를 통해 사용자 집합을 정의하고 관리 할 수 있으며 각 프로세스, 파일과도 연결된다
- 권한 상승은 더 많은 권을 가진 유효 ID로 변경할 수 있게 한다.
커널 자료구조
- 일반적인 프로그램 자료구조와 매우 유사
- 이진 탐색 트리(left≤right)
- 탐색 성능은 O(n)
- 균형 이진 탐색 트리는 O(log n)
- 해시 함수는 해시 맵을 생성한다
- 비트맵: n개 항목의 상태를 나타내는 n개의 이진 비트열
- Linux 자료구조는 다음 파일에 정의되어 있음 <linux/list.h>,<linux/kfifo.h>,<linux/rbtree.h>