▶클릭◀ 암보험,실비보험 가입시 주의사항

 

▶클릭◀ 병원 약국에서 지출한 병원비 약값 최대 80% 보장받기

 

 

파일 시스템은 많은 양의 데이터를 영구히 유지해야 하기 때문에 보조 저장장치에 영구히 상주한다. 가장 일반적인 보조 저장매체는 디스크이다.

물리 디스크는 미디어 사용을 제어하고 한 디스크에서 다앙한 파일 시스템을 지원하기 위해 파티션으로 나눌 수 있다. 이들 파일 시스템을 사용하려면 논리 파일 시스템 구조로, 마운트해야 한다. 파일 시스템은 보통 계층적으로 또는 모듈 구조로 구현된다. 하부 계층은 저장장치의 물리적인 면을 처리한다. 상위 계층은 기호형 파일 이름과 파일의 논리적인 면을 처리한다. 중간 계층은 논리적인 파일 개념을 물리 장치 특성으로 맵핑한다. 가질 수 있다. VFS

모든 파일 시스템 타입은 다른 구조와 다른 알고리즘을 계층은 상위 계층이 각 파일 시스템 타입을 동일하게 접근하는 것을 허용한다. 원격 파일 시스템, 이라도 시스템 디렉터리 구조로 통합될 수 있고, VFS 인터페이스를 통하여 표준 시스템 호출에 의해 작업할 수 있다.

파일들은 디스크의 자유 공간에 세 가지 방법, 즉 연속, 연결, 색인 할당 방법으로 할당될 수 있다. 연속 할당은 외부 단편화의 문제가 있다. 연결 할당은 직접 접근이 매우 비효율적이다. 색인 할당은 색인 블록 때문에 상당한 오버헤드가 있다. 이들 알고리즘을 최적화시키기 위한 많은 방법이 있다. 연속 공간은 외부 단편 문제를 감소시키고, 융통성을 증가시키기 위해 익스텐트(extent)를 이용하여 확장될 수 있다. 색인 할당은 필요한 색인 항목의 수를 감소시키고 처리율을 높이기 위해 이리 블록의 클러스터링을 가할 수 있다. 큰 클러스터를 사용하는 시스템에서의 인덱싱은 익스텐트 연속 할당 방법과 유사하다.

가용 공간 할당 방법들은 디스크 공간 사용의 효율성, 파일 시스템의 성능, 그리고 보조 저장장치의 신뢰성에 영향을 준다. 비트 벡터와 연결 리스트 방법 등이 사용된다. 최적화는 하나의 연속적인 영역에 연결 리스트를 배치하는 FAT와 그룹핑, 카운팅 등을 포함한다.

디렉터리 관리 루틴은 효율성, 성능 그리고 신뢰성을 고려해야 한다. 해시 테이블은 가장 많이 사용되는 방법이며 빠르고 효율적이다. 불행하게도, 시스템 크래시나 테이블의 손상이 디스크의 내용과 일치하지 않는 디렉터리 정보를 야기시킬 수 있다. 일관성체커(consistency checker)를 사용하여 이러한 손상을 복구할 수 있다. 운영체제 백업도구는 하드웨어 오류, 시스템 버그, 사용자 에러로 인한 데이터 또는 디스크 오루를 복구하기 위해 디스크 데이터를 테이프에 복사한다.

NFS같은 네트워크 파일 시스템은 사용자가 원격 시스템의 파일과 디렉터리를 로컬 파일 시스템에 존재하는 것처럼 접근하는 것을 허용하기 위해 클라이언트-서버 방법론을 사용한다. 클라이언트의 시스템 호출은 네트워크 프로토콜로 변환되고, 이어 서버의 파일 시스템 연산으로 재번역된다. 네트워킹과 여러 클라이언트의 접근은 데이터 일관과 성능에 해결해야 할 문제를 야기한다.

시스템 동작에서 파일 시스템이 기본적인 역할을 실행하기 때문에 파일 시스템의 능과 신뢰성은 중요하다. 로그 구조와 캐싱 기술이 성능을 향상시키는 반면, 로그 구조와 RAID는 신뢰성을 향상시킨다. WAFL 파일 시스템은 특징 입출력 부하에 대응하기 위하여 성능을 최적화하는 하나의 사례이다.

'컴퓨터 구조' 카테고리의 다른 글

입출력 시스템에 대해서..  (0) 2022.04.17
2차 저장장치 구조에 대해서..  (0) 2022.04.17
파일 시스템에 관해서..  (0) 2022.04.17
가상메모리에 대해서  (0) 2022.04.17
메모리 관리 전략은 이렇게..  (0) 2022.04.17
본 광고는 광고심의기준을 준수하였으며, 유효기간은 심의일로부터 1년입니다.

▶클릭◀ 암보험,실비보험 가입시 주의사항

 

▶클릭◀ 병원 약국에서 지출한 병원비 약값 최대 80% 보장받기

 

 

파일은 운영체제에 의하여 정의되고 구현되는 추상적인 자료형이다. 파일은 논리 레코드의 연속으로서, 바이트, 행(길이가 고정 또는 가변) 또는 좀 더 복합적인 자료 항목들이다. 운영체제는 구체적으로 다양한 레코드형을 사용자에게 제공하기나 아니면 응용 프로그램의 몫으로 남긴다.

운영체제의 가장 중요한 임무는 논리적인 파일 개념을 자기테이프나 디스크 같은 물리 저장장치로 맵핑시키는 것이다. 물리 레코드의 크기는 논리 레코드 크기와 일치하기 않기 때문에 논리 레코드를 물리 레코드에 정리 배치시켜야 한다. 이 작업 역시 운영게제에 의하여 지원되거나 응용 프로그램에 의해 지원될 수 있다.

파일 시스템의 각 장치들은 볼륨 목차 또는 장치 상 파일의 위치를 열거하는 장치 디렉터리를 가진다. 그리고 파일을 조직적으로 정리할 수 있도록 디렉터리를 만드는 것이 유용하다. 다중 사용자 시스템에서 1단계 디렉터리는 모든 파일이 고유 이름을 가져야 하기 때문에 파일 명칭 부여 문제가 유발된다. 2단계 디렉터리는 사용자마다 독자적인 디렉터리를 할당함으로써 이 문제를 해결한다. 디렉터리는 이름을 기준으로 파일을 열거하고, 파일의 디스크 상 위치, 길이, 타입, 소유자, 생성 시간, 마지막 사용 시간 등과 같은 정보를 포함한다.

2단계 디렉터리를 자연스럽게 일반화시키면 트리 구조 디렉터리가 된다. 트리 구조 디렉터리는 사용자가 파일을 구성하기 위하여 하위디렉터리를 생성하는 것을 허용한다. 비순환 그래프 디렉터리 구조는 서브디렉터리와 파일의 공유를 가능하게 하는 반면에 탐색과 삭제를 복잡하게 만든다. 일반적인 그래프 구조는 디렉터리와 파일의 공유에 완전한 융통성을 주는 대신 사용되지 않는 디스크 공간을 회수하기 위해 쓰레기 수집(garbagecollection)이 필요하다.

디스크는 하나 이상의 볼륨으로 나뉘어지며 각 볼륨은 미가공 상태이거나 하나의 파일 시스템을 포함한다. 파일 시스템은 시스템의 지명 구조에 마운트되어야 이용 가능하다. 지명 구조는 은영체제마다 다르다. 일단 마운트되면 볼륨 내의 파일들이 사용 가능해진다. 파일 시스템은 접근을 금지시키거나 유지보수를 위해 언마운트될 수 있다.

파일 공유는 시스템이 제공하는 시맨틱에 의해 좌우된다. 파일은 다수의 읽는 자의 쓰는 자를 갖거나 또는 공유에 제한을 두기도 한다. 분산 파일 시스템은 서로가 네트워크를 통해 접근할 경우, 클라이언트 호스트가 서버로부터 볼륨이나 디렉터리를 마운트하도록 허용한다. 원격 파일 시스템은 신뢰성, 성능, 그리고 보안과 관련된 해결해야 하는 문제를 제시한다. 분산 정보 시스템은 클라이언트와 서버가 사용과 접근을 관리하기 위해 상태 정보를 공유할 수 있도록 사용자, 호스트 및 접근 정보를 유지한다. 과일은 대부분의 컴퓨터 시스템에서 주요 정보 저장 수단이므로 보호되어야 한다.

파일에 대한 접근은 읽기, 쓰기, 실행, 덧붙이기, 삭제, 디렉터리 열거 등의 접근 타입별로 통제되어야 한다. 파일 보호는 암호, 접근 리스트 또는 기법으로 제공될 수 있다.

'컴퓨터 구조' 카테고리의 다른 글

2차 저장장치 구조에 대해서..  (0) 2022.04.17
파일 시스템 구현에 대해서..  (0) 2022.04.17
가상메모리에 대해서  (0) 2022.04.17
메모리 관리 전략은 이렇게..  (0) 2022.04.17
교착상태에 대해서..  (0) 2022.04.17
본 광고는 광고심의기준을 준수하였으며, 유효기간은 심의일로부터 1년입니다.

▶클릭◀ 암보험,실비보험 가입시 주의사항

 

▶클릭◀ 병원 약국에서 지출한 병원비 약값 최대 80% 보장받기

 

 

실제 주소 공간보다 더 큰 논리 주소 공간을 필요로 실행할 수 있다.는 것은 바람직한 일이라고 볼 수 있다. 가상 메모리는 매우 큰 논리 주소 공간을 은 물리 메모리로 사상하는 기법이다. 가상 메모리는 매우 큰 프로세스를 실행시킬 수 있기하고, 다중 프로그래밍의 정도를 증가시켜 CPU의 이용률을 향상시킨다. 특히 응용 프로그래머로 하여금 메모리 크기에 신경을 쓰지 않도록 해준다. 또한, 가상 메모리를 이해 여러 프로세스가 시스템 라이브러리와 메모리를 공유할 수 있다. 가상 메모리는 또하쓰기-시-복사로 불리는 효율적인 프로세스 생성 방법도 제공하여 부모와 자식 프로세스들 간에 실제 메모리를 공유할 수 있도록 해 준다.

가상 메모리는 보통 요구 페이징으로 구현된다. 순수 요구 페이징은 실제로 페이지를 참조할 때까지 어떤 페이지도 미리 불러들이지 않는다. 그러다가 메모리에 올라와 있지 않은 페이지에 대해 참조를 하면, 그 때 페이지 부재(page fault)를 일으킨다. 운영체제는 내부의 테이블을 참조하여 그 페이지가 백킹 저장장치 내 어디에 있는지를 알아낸다. 그리고 가용 프레임을 찾아내서 그 페이지를 백킹 저장장치로부터 읽어 들인다. 페이지 테이블은 이 수정사항을 기록하고 페이지 부재를 일으킨 명령은 다시 실행된다. 이런 방식으로 전체 프로세스가 주 메모리에 올라와 있더라도 프로세스를 실행할 수 있게 해준다. 페이지 부재율이 충분히 낮기만 하면 가상 메모리 시스템의 성능은 만족할 만한 수준이다.

요구 페이징을 통해 프로세스에 할당되는 프레임 수를 줄일 수 있다. 이는 다중 프로그래밍의 정도를 높이고(동시에 실행되는 프로세스의 수를 더 증가시키고) - 이론적으로는-CPU 이용률을 높일 수 있다. 또한, 메모리 요구량이 실제 물리 메모리보다 큰 프로세스들도 실행할 수 있도록 해 준다. 이러한 프로세스들은 가상 메모리상에서 실행된다.

 

메모리 총 요구량이 물리 메모리의 용량을 초과한다면, 새로운 페이지를 읽어오기 위해 기존의 페이지를 교체시킬 필요가 있다. 여러 가지 교체 알고리즘이 사용된다. FIF)알고리즘은 구현하기는 쉽지만 Belady의 모순 현상 때문에 문제가 있다. 최적 페이기교체 알고리즘은 미래의 정보를 필요로 한다. LRU는 최적 교체 알고리즘을 근사하지만 이 역시 구현하기가 쉽지 않을 수 있다. 2차 기회 알고리즘과 같은 대부분의 페이지 교체 정책은 LRU 정책의 근사 알고리즘을 사용한다.

페이지 교체 알고리즘과 함께 프레임 할당 정책이 중요하다. 할당은 지역 교계 정책을 사용하여 고정되어 있을 수도 있고 전역 교체 정책을 사용하여 동적일 수 있다. 각업 집합 모델은 프로그램의 실행이 지역성을 띠고 있다고 가정한다. 작업 집합은 현재 실행중인 지역의 페이지들의 집합이다. 따라서 각 프로세스에는 작업 집합을 충분히 수용할 수 있는 만큼의 프레임이 할당되어야 한다. 만약 프로세스의 작업 집합을 수용할 수 있는 충분한 공간을 할당해 주지 않으면 쓰래싱(thrashing)이 발생한다. 쓰래싱을 피하기 위해 충분한 공간을 확보하는 데는 프로세스 스와핑과 스케줄링이 필요하다.

대부분의 운영체제는 메모리 사상 파일 기능을 제공하여 파일 I/O가 일반적인 메모리 접근으로 처리될 수 있도록 한다. Win32 API는 공유 메모리를 메모리 사상 파일로 구현하고 있다.

커널 프로세스들은 보통 물리적으로 연속된 페이지들을 할당받는 것이 필요하다. 버디 시스템은 2의 거듭제곱 크기를 갖는 단위의 메모리를 할당하고, 이에 따라 단편화 문제가 발생할 수 있다. 슬랩 할당기는 각 커널 자료의 구조를 하나 또는 그 이상의 물리적으로 연속된 페이지인 슬랩 상의 캐시에 할당한다. 슬랩 할당을 통해 단편화에 의한 메모리 낭비를 막고 메모리 요구를 빠르게 처리해 줄 수 있다.

페이지 교체 정책, 프레임 할당 정책과 같은 주요한 문제 이외에도 페이징 시스템 설계에 있어 고려해야 할 것들로는 페이지 크기, 입출력, 잠금, 프리페이징, 프로세스 생성, 프로그램 구조 등이 있다.

'컴퓨터 구조' 카테고리의 다른 글

파일 시스템 구현에 대해서..  (0) 2022.04.17
파일 시스템에 관해서..  (0) 2022.04.17
메모리 관리 전략은 이렇게..  (0) 2022.04.17
교착상태에 대해서..  (0) 2022.04.17
프로세스 동기화에 대해서  (0) 2022.04.16
본 광고는 광고심의기준을 준수하였으며, 유효기간은 심의일로부터 1년입니다.

▶클릭◀ 암보험,실비보험 가입시 주의사항

 

▶클릭◀ 병원 약국에서 지출한 병원비 약값 최대 80% 보장받기

 

 

다중 프로그램된 운영체제의 메모리 관리 알고리즘은 아주 간단한 방식에서부터 페이지화된 세그먼테이션까지 다양한 기법들이 있다. 이중 어느 것을 사용할 것인가를 결정짓는 가장 큰 요소는 하드웨어에 있다. CPU가 생성하는 모든 주소에 대해 먼지 오류가 검사되어야 하고 물리 주소로 맵핑되어야 한다. 이러한 작업은 소프트웨어로는 효율적으로 실행될 수 없으므로, 하드웨어가 이 기능을 제공해 주어야 한다.

여기서 논의된 메모리 관리 알고리즘들(연속적인 할당, 페이징, 세그먼테이션, 페이징과 세그먼테이션의 조합)은 많은 측면에서 서로 다르다. 다음은 메모리 관리 정책들을 비교하는 데 중요한 관점들이다.

 

하드웨어 지원: 단일 또는 다중 분할 기법에 대해서는 단순한 기준 레지스터나 한계 레지스터의 쌍만으로도 충분한 반면, 페이징과 세그먼테이션은 주소 변환을 정의하는 맵핑 테이블(mapping table)이 필요하다.

성능 : 구조가 복잡해질수록 논리 주소를 물리 주소로 변환시키는 데 소요되는 시간이 늘어난다. 페이징과 세그먼테이션도 맵핑 테이블이 고속 레지스터에 의해 구현된다면 더 빨라질 수 있다. 그러나 만약 테이블이 주 메모리에서 가동되어야 한다.

 

반면, 프로그램의 메모리 액세스 속도는 상당히 느려질 수 있다. TLB 장치가 성능저하를 허용할 수 있는 수준까지 감소시킬 수 있다.

• 단편화: 다중 프로그램된 시스템은 일반적으로 다중 프로그래밍의 정도가 높아 좋은 성능을 보인다. 프로세스들의 집합에 대해 다중 프로그래밍 정도를 높이는 방법은 메모리에 더 많은 프로세스를 적재하는 방법 밖에 없다. 그러기 위해서는 기모리의 낭비나 단편화를 줄여야 한다. 단일 분할 기법 및 페이징과 같이 고정된 크기의 할당 단위를 가진 시스템은 내부 단편화의 문제를 가지고 있고, 다중 분할 기법 및 세그먼테이션과 같이 가변적 할당 단위를 가진 시스템은 외부 단편화의 문게를 가지고 있다.

• 재배치(relocation) : 외부 단편화 문제에 대한 해결책의 하나는 압축(cornpactior.)이다. 압축이란 프로그램이 눈치 채지 못하는 동안 그것들의 위치를 한쪽 끝으로 옮기는 것을 말한다. 그러기 위해서는 프로그램의 논리 주소가 실행 시에 동적으로 재배치될 수 있어야 한다. 주소가 적재 시간(load time)에 재배치되고 결정되어 러린다면 메모리를 압축할 수가 없게 된다.

• 스와핑(swapping) : 스와핑은 어느 알고리즘에도 추가될 수 있다. 운영체재가 정한 주기마다 스케줄링 정책에 따라 프로세스를 주 메모리에서 보조 메모리로, 다시 나증에 보조 메모리에서 주 메모리로 이동시킨다. 이런 기법을 사용하여 메모리에 동시에 적재될 수 있는 프로세스보다 더 많은 프로세스를 실행시킬 수 있다.

• 공유(sharing) : 다중 프로그래밍 정도(multiprogramming degree)를 증가시킬 수 있는 또 다른 방법은 코드와 데이터를 서로 다른 사용자 사이에 공유시키는 것이다. 공유는 공유될 수 있는 데이터의 크기가 작아도 되도록 페이징이나 세그먼테이션을 사용한다. 공유는 제한된 메모리에서 많은 프로세스를 실행시키는 방법이지만, 공유되는 프로그램이나 데이터는 신중하게 설계되어야만 한다.

보호(protection) : 페이지나 세그먼트는 각 부분들이 실행 전용(execute-only), 읽기 전용(read-only), 읽기/쓰기(read/write) 등으로 선언될 수 있다. 이런 제한은 코드나 데이터를 공유하는 경우 또는 일반적인 프로그래밍 오류를 실행시간에 점검할 수 있는 기능이 필요한 경우에 유용하다.

'컴퓨터 구조' 카테고리의 다른 글

파일 시스템에 관해서..  (0) 2022.04.17
가상메모리에 대해서  (0) 2022.04.17
교착상태에 대해서..  (0) 2022.04.17
프로세스 동기화에 대해서  (0) 2022.04.16
cpu 스케줄링  (0) 2022.04.16
본 광고는 광고심의기준을 준수하였으며, 유효기간은 심의일로부터 1년입니다.

▶클릭◀ 암보험,실비보험 가입시 주의사항

 

▶클릭◀ 병원 약국에서 지출한 병원비 약값 최대 80% 보장받기

 

 

대기 중인 프로세스 중 한 프로세스에 의해서만 발생할 수 있는 사건을 두 개 이상의 프로세스들이 무한정 대기할 때 교착상태가 발생한다. 근본적으로, 교착상태를 처리하는데는 세 가지 방식이 있다.

 

  • 시스템이 결코 교착상태가 되지 않도록 보장하기 위하여 교착상태를 예방하거나 회피하는 프로토콜을 사용한다.
  • 시스템이 교착상태가 되도록 허용한 다음에 회복시키는 방법이 있다.
  • 문제를 무시하고, 교착상태가 시스템에서 결코 발생하지 않는 척 한다.

 

세 번째 해결안이 UNIX와 Windows를 포함해 대부분의 운영체제가 사용하는 방법이다. 교착상태는 네 가지 필요조건들이 동시에 시스템 내에서 충족될 때, 그 때에만 발생한다.

 

이 조건들은 상호 배제, 점유 및 대기, 비 선점, 순환 대기이다. 교착상태를 예방하려면, 우리는 필요한 조건들 중에서 최소한 하나가 성립되지 않도록 조치해야 한다.

교착상태를 예방하는 것이 아니라 회피하는 방법은 운영체제가 각 프로세스가 자원을 활용하는 방법에 대해 사전 정보를 갖는 것이다. 예를 들어, 은행원 알고리즘은 각 프로세스마다 각 종류의 자원을 최대 몇 개까지 요청하는 지를 사전에 알아야 한다. 우리는 이러한 정보를 이용해 교착상태 회피 알고리즘을 정의할 수 있다.

만일 시스템이 교착상태가 결코 발생하지 않는 프로토콜을 채택하지 않으면, 탐지와 회복 방법을 반드시 적용해야 한다. 교착상태가 발생하였는지 결정하려면 교착상태 탐지 알고리즘을 반드시 호출해야 한다. 교착상태가 탐지되면, 시스템은 반드시 교착상태인 프로세스들 중 몇몇을 중지시키거나, 교착상태인 프로세스들로부터 자원을 선점해 회복해야 한다.

자원 선점을 이용해 교착상태를 제거하려면 희생자 선택, 롤백, 그리고 기아 현상의 세 가지 사항을 고려해야 한다. 비용 요인을 가장 중요시하여 롤백시킬 희생자를 선택하는 시스템에서는 기아 상태가 발생할 수 있다. 그 결과, 선택된 프로세스들은 자신의 태스크를 결코 종료하지 못한다.

연구자들은 이 기본적인 방법 중 어느 것도 단독으로는 운영체제에서의 자원 할당 문제 전 범위를 처리하는 데에는 적절하지 못하다고 주장한다. 그렇지만 시스템의 자원 클래스 각각에 최적인 해결책을 선택하는 데 이 기본적인 방법들을 조합하여 쓸 수 있다.

'컴퓨터 구조' 카테고리의 다른 글

가상메모리에 대해서  (0) 2022.04.17
메모리 관리 전략은 이렇게..  (0) 2022.04.17
프로세스 동기화에 대해서  (0) 2022.04.16
cpu 스케줄링  (0) 2022.04.16
다중 스레드 프로그래밍  (0) 2022.04.16
본 광고는 광고심의기준을 준수하였으며, 유효기간은 심의일로부터 1년입니다.

▶클릭◀ 암보험,실비보험 가입시 주의사항

 

▶클릭◀ 병원 약국에서 지출한 병원비 약값 최대 80% 보장받기

 

 

데이터를 공유하는 상호 협력적인 순차 프로세스들이 주어지면, 한 순간에 하나의 프로세스 또는 스레드만이 임계 영역을 사용하는 것을 보장하는 상호 배제가 제공되어야 한다. 통상 컴퓨터 하드웨어는 상호 배제를 보장하는 이러 연산을 제공한다. 그리나 이런 하드웨어를 기반으로 하는 해결 방안은 너무 복잡하여 대부분의 개발자는 사용할 수 없다. 세마포는 이러한 난점을 극복한다. 다양한 동기화 문제를 풀기 위해 세마포가 사용될 수 있으며, 특별히 하드웨어가 원자적(atomic) 연산을 지원하는 경우 효율적으로 구현될 수 있다.

다양한 동기화 문제들은(한정된 버퍼, readers-writers, 식사하는 철학자들 문제와 같은) 이들이 많은 부류의 병행 제어 문제의 예가 되기 때문에 중요하다. 이들 문제는 새로 제안되는 거의 모든 동기화 방안을 검증하는 데 사용된다.

운영체제는 시간과 관련해서 일어날 수 있는 오류에도 대비해야 한다. 여러 가지 언어 구조체(language construct)들이 이러한 문제를 해결하기 위해 제안되었다. 모니터(Monitor)는 추상 데이터형(abstract data type)을 공유하기 위한 동기화 기법을 제공한다. 조건 변수들은 모니터 프로시저(monitor procedure)들이 자신의 실행을 신호가 올 때까지 봉쇄시킬 수 있는 방법을 제공한다.

또 운영체제들은 동기화를 위한 지원도 제공한다. Solaris, Windows XP 및 Linux등은 공유 데이터의 접근을 제어하기 위하여 세마포, mutex, spinlocks 및 조건 변수와 같은 기법들을 제공한다. Pthreads API는 mutex와 조건 변수를 지원한다.

트랜잭션은 원자적으로 실행되어야 하는 프로그램 단위이다. 즉, 트랜잭션이 요구하는 연산들이 모두 성공적으로 완료되거나 아니면 그 어느 것도 실행되지 않아야 한다. 시스템이 고장나더라도 원자성을 보장해 주기 위해서는 로그 우선 쓰기(write-ahead log)를 사용할 수 있다. 모든 갱신은 로그에 기록되고 이것은 안전 저장장치에 저장된다. 시스템이 고장나면, 로그 안에 있는 정보가 갱신된 데이터 항목을 복구하는 데 사용된다. 이 복구 작업은 redo와 undo 연산을 이용하여 실행된다. 시스템 고장이 발생한 후 로그를 검색하는 오버헤드를 줄이기 위하여 검사점(checkpoint) 기법을 사용한다.

여러 개의 트랜잭션들이 서로 중첩되어 실행될 때 원자성을 보장하기 위하여 병행 제어 기법을 사용해야 한다. 다양한 병렬 제어 기법들은 연산을 요청한 트랜잭션을 연기시키거나 철회함으로써 직렬가능성을 보장한다. 가장 많이 쓰이는 방법은 락킹 프로토콜과 타임스탬프 순서 프로토콜이다.

'컴퓨터 구조' 카테고리의 다른 글

메모리 관리 전략은 이렇게..  (0) 2022.04.17
교착상태에 대해서..  (0) 2022.04.17
cpu 스케줄링  (0) 2022.04.16
다중 스레드 프로그래밍  (0) 2022.04.16
프로세스의 일련 과정  (0) 2022.04.16
본 광고는 광고심의기준을 준수하였으며, 유효기간은 심의일로부터 1년입니다.

▶클릭◀ 암보험,실비보험 가입시 주의사항

 

▶클릭◀ 병원 약국에서 지출한 병원비 약값 최대 80% 보장받기

 

 

CPU 스케줄링은 준비완료 큐로부터 대기 중인 프로세스를 선택해 CPU를 한당하는 작업이다. CPU는 디스패처에 의해 선텍된 프로세스에게 할당된다.

선입 선처리(FCFS) 스케줄링은 가장 단순한 스케줄링 알고리즘이지만, 짧은 프로세스들이 매우 긴 프로세스들이 끝날 때가지 기다리야 하는 경우를 유발시킨다. 최소 자위우선(SJF) 스케줄링은 최적임이 증핑 기능하며, 가장 짧은 대기 시간을 제공한다. S.스케줄링을 구현하는 일은 이러운 데, 이는 다음 CPU 버스트의 길이를 예측하기 이립기 때문이다. SJF 알고리즘은 일반적인 우선순위 스케줄링 알고리즘의 특빌한 경우로 후자는 CPU를 단순히 최고 우선순위의 프로세스에게 할당한다. 우선순위와 SJF 스케줄링은 모두 기아 상태를 겪을 수 있다. 노화(aging)는 기아 상태를 예방하는 기법이다.

9라운드 로빈(RR) 스케줄링은 시분할(대화형) 시스템에 더 적합하다. 라운드 로빈 스케줄링은 준비완료 큐에 있는 첫 번째 프로세스에게 이 시간 단위 동안 CPU를 할당한다. 여기서 q는 시간 할당량이다. Q 시간 단위 이후에, 프로세스가 CPU를 양도하지 않았다면, CPU를 선점하고 프로세스는 준비완료 큐의 꼬리로 이동한다. 주요 문제는 시간 할당량을 선택하는 것이다. 시간 할당량이 너무 크면, 라운드 로빈 스케줄링은 선입 선처리 스케줄링으로 격하되고, 만약 시간 할당량이 너무 적으면, 문맥 교환 시간으로 나타나는 스케줄링 오버헤드가 지나치게 커진다.

선입 선처리 알고리즘은 비선점형이다. 라운드 로빈 알고리즘은 선점형이다. SJF와 우선순위 알고리즘은 선점형일 수도 있고 비선점형일 수도 있다.

다단계 큐 알고리즘들은 다양한 클래스의 프로세스들에 대해 상이한 알고리즘을 사용하도록 허용한다. 가장 보편적인 모델은 라운드 로빈 스케줄링을 사용하는 전위 대화형큐와 선입 선처리 스케줄링을 사용하는 후위 일괄처리 큐이다. 다단계 피드백 큐는 프로세스들을 한 큐에서 다른 큐로 이동하는 것을 허용한다.

현대의 많은 컴퓨터 시스템들은 다중처리기를 지원하고 각 처리기가 독립적으로 자신을 스케줄하게 한다. 통상 각 처리기는 자신의 프로세스 또는 스레드 큐를 유지하고 처리기 모두가 프로세스를 실행시킬 수 있다. 다중처리기와 관련된 추가적인 스케줄 쟁점은 처리기 친화성과 부하 균등, 다중코어 처리 및 가상화 시스템에서의 스케줄링을 포함한다.

스레드를 커널 차원에서 지원하는 운영체제는 프로세스가 아니라 - 스레드를 스케줄링해야 한다. Solaris와 Windows XP가 이에 해당한다. 두 운영체제는 실시간 스레드지원을 포함하여 우선순위에 기반을 둔 선점 방식으로 스레드를 스케줄한다. Linux 프로세스 스케줄러도 우선순위에 기반을 둔 스케줄링을 하며 실시간도 지원한다. 이들 세 운영체제의 스케줄링 알고리즘들은 모두 일괄처리이면서 계산 중심 프로세스보다 대화형 프로세스들을 우대한다.

스케줄링 알고리즘의 다양성 때문에 우리는 알고리즘들을 선택하기 위한 방법을 가질필요가 있다. 분석적 방법은 알고리즘의 성능을 결정하는 데 수학적 분석을 이용한다.모의실험 방법은 대표적인 견본이 되는 프로세스들에 대해 스케줄링 알고리즘을 흉내 내어 얻어지는 성능을 계산하여 결정한다. 그러나 모의실험은 기껏해야 실제 시스템의 근사치만을 알려줄 뿐이다. 스케줄링 알고리즘을 평가하는 유일하게 믿을 수 있는 방법은실제 시스템에 알고리즘을 구현하고 실세계 환경에서의 성능을 감시하는 것이다.

'컴퓨터 구조' 카테고리의 다른 글

교착상태에 대해서..  (0) 2022.04.17
프로세스 동기화에 대해서  (0) 2022.04.16
다중 스레드 프로그래밍  (0) 2022.04.16
프로세스의 일련 과정  (0) 2022.04.16
컴퓨터 시스템 구조에 대해서..  (0) 2022.04.16
본 광고는 광고심의기준을 준수하였으며, 유효기간은 심의일로부터 1년입니다.

▶클릭◀ 암보험,실비보험 가입시 주의사항

 

▶클릭◀ 병원 약국에서 지출한 병원비 약값 최대 80% 보장받기

 

스레드는 프로세스 안의 제어 흐름이다. 다중 스레드 프로세스는 같은 주소 공간 안에 여러 개의 서로 다른 제어 흐름을 가지고 있다. 다중 스레딩의 장점은 사용자에 대한 향상된 응답성, 프로세스 안의 자원 공유, 경제성 및 더 효율적인 다중코어의 이용과 같은 규모 가변성 등이다.

사용자 수준 스레드는 프로그래머는 알고 있지만, 커널은 그 존재를 모르는 스레드이다. 커널 수준 스레드는 운영체제 커널에 의해서 지원되며 관리된다. 일반적으로, 커널의 개입을 필요로 하지 않기 때문에 사용자 수준 스레드가 커널 수준 스레드보다 빠르게 생성되고, 빠르게 관리된다. 사용자와 커널 스레드와 관련하여 세 가지의 모델이 있다. 다-대-일 모델은 여러 개의 사용자 스레드를 하나의 커널 스레드로 사상한다. 일-대일 모델은 각 사용자 스레드를 그에 대응하는 커널 스레드로 사상한다. 다-대-다 모델은 많은 사용자 스레드를 그 보다 적은 수 또는 같은 수의 커널 스레드로 멀티플렉스한다.

대부분의 현대 운영체제는 스레드를 위한 커널 지원 기능을 가지고 있다. 이 중 대표적인 시스템에는 Windows 98, NT, 2000, XP와 Solaris, Linux가 있다.

스레드 라이브러리는 응용 프로그래머에게 스레드를 생성하고 관리하기 위한 API를제공한다. 현재 POSIX, Pthreads, Windows 시스템의 Win32 스레드, Java 스레드의3개 스레드 라이브러리가 가장 많이 사용되고 있다.

 

다중 스레드 프로그램은 프로그래머에게 fork () 와 execc() 시스템 호출의 의미 등과 같은 많은 새로운 숙제를 안겨준다. 또 다른 문제들로는 스레드 취소, 신호 처리, 스레드별 데이터 등이 있다.

'컴퓨터 구조' 카테고리의 다른 글

프로세스 동기화에 대해서  (0) 2022.04.16
cpu 스케줄링  (0) 2022.04.16
프로세스의 일련 과정  (0) 2022.04.16
컴퓨터 시스템 구조에 대해서..  (0) 2022.04.16
컴퓨터 운영체제에 대해서..  (0) 2022.04.16
본 광고는 광고심의기준을 준수하였으며, 유효기간은 심의일로부터 1년입니다.

▶클릭◀ 암보험,실비보험 가입시 주의사항

 

▶클릭◀ 병원 약국에서 지출한 병원비 약값 최대 80% 보장받기

 

프로세스는 실행 중인 프로그램이다. 프로세스는 실행되면서 상태를 변경한다. 프로세스의 상태는 프로세스의 현재 활동에 의해 정의된다. 각 프로세스의 상태는 새로운(new), 준비완료(ready), 실행(running), 대기(waiting), 그리고 종료(terminated) 상태 중의 하나이다. 각 프로세스는 운영체제 내에서 자신의 프로세스 제어 블록(PCB, Process Control Block)에 의해 표현된다.

 

프로세스가 실행되지 않을 때는 적절한 대기 큐에 놓이게 된다. 운영체제에는 크게 두 가지 부류의 큐가 존재하는데 하나는 입출력 요청 큐이며, 다른 하나는 준비완료 큐이다. 준비완료 큐는 실행할 준비가 완료되어 CPU를 기다리고 있는 모든 프로세스를 가지고 있다. 각 프로세스는 PCB로 대표되며, 이 PCB들은 준비완료 큐를 형성하기 위해서로 링크될 수 있다. 장기(잡) 스케줄링이란 CPU를 차지하기 위해 경쟁할 프로세스를 선택하는 일이다. 통상적으로 장기 스케줄링은 자원 할당 고려사항, 특히 주 메모리 관리에 의해 많은 영향을 받는다. 단기(CPU) 스케줄링은 준비완료 큐로부터 하나의 프로세스를 선택하는 일이다.

 

운영체제는 부모 프로세스가 자식 프로세스를 생성할 수 있는 기법을 제공해야 한다. 부모는 작업을 진행하기 전에 자식 프로세스가 종료되는 것을 기다릴 수 있다. 또한 부모와 자식 프로세스가 동시에 실행될 수도 있다. 병행 실행을 허용하는 이유는 여러 가지가 있는데, 대표적인 이유는 정보 공유, 계산 속도 증가, 모듈성, 그리고 편의성 등이다.

운영체제 내에서 실행되는 프로세스들은 독립적인 프로세스이거나 또는 협력적인 프로세스이다. 협력적인 프로세스들은 서로 통신하기 위한 프로세스 간 통신 기법을 필요로 한다. 통신은 주로 두 가지 방법으로 이루어지는 데 하나는 공유 메모리이며, 다른 하나는 메시지 전달이다. 공유 메모리 기법은 통신 프로세스들이 어떤 변수를 공유할 것을 필요로 한다. 프로세스들은 이러한 공유 변수의 사용을 통해 정보를 교환하도록 기대한다. 공유 메모리 시스템에서는 통신을 제공하기 위한 책임이 응용 프로그래머에게 있다.

 

즉, 운영체제는 단지 공유 메모리만 제공해 줄 필요가 있다. 메시지 전달 기법은로세스가 메시지를 교환하도록 허용한다. 통신을 제공할 책임은 운영체제 자체에 있을수 있다. 이 두 가지 기법은 서로 배타적인 방법은 아니며, 하나의 운영체제 내에서방법이 같이 사용될 수 있다.

클라이언트 서버 시스템에서의 통신은 (1) 소켓 (2) 원격 프로시저 호출(remote procedure call, RPC) 또는 (3) 파이프를 사용한다. 소켓은 통신의 극점으로 정의된 것이다.응용 프로그램 두 개가 통신할 때에는 두 개의 소켓이 만들어지고 통신 채널 양단에나씩 배정된다. RPC는 분산 처리 통신에서 사용되는 또 다른 형태의 통신이다. RPC는한 프로세스(또는 스레드)가 원격지 응용 프로그램의 프로시저를 호출할 때 사용한다.보통의 파이프가 부모와 자식 프로세스 간의 통신을 허용하는 반면에 지명 파이프는 서로 무관한 프로세스 사이의 통신을 허용한다.

'컴퓨터 구조' 카테고리의 다른 글

프로세스 동기화에 대해서  (0) 2022.04.16
cpu 스케줄링  (0) 2022.04.16
다중 스레드 프로그래밍  (0) 2022.04.16
컴퓨터 시스템 구조에 대해서..  (0) 2022.04.16
컴퓨터 운영체제에 대해서..  (0) 2022.04.16
본 광고는 광고심의기준을 준수하였으며, 유효기간은 심의일로부터 1년입니다.

▶클릭◀ 암보험,실비보험 가입시 주의사항

 

▶클릭◀ 병원 약국에서 지출한 병원비 약값 최대 80% 보장받기

 

운영체제는 이러 가지 시비스를 제공한다. 최하위 수순에서는 실행 중인 프로그램이 시스템 호출을 통해 운영체제에게 직접 요청하도록 허용한다. 보다 높은 수준에서는, 명령 해석기 또는 셸이 사용자가 프로그램을 작성하지 않고도 요청할 수 있는 기법을 제공한다. 명령은 일괄처리 모드 실행의 경우 파일로부터 올 수도 있고, 대화식 혹은 시분할 모드에서는 터미널로부터 직접 올 수도 있다. 많은 공통적인 사용자의 요구를 만족하기 위해 시스템 프로그램이 제공된다.

요청의 타입은 요청의 수준에 따라 다양하다. 시스템 호출 수준은 프로세스 제어일 및 장치 조작과 같은 기본적인 기능을 반드시 제공해야 한다. 명령 해석기 혹은 시스템 프로그램에 의해 충족되는 보다 높은 수준의 요청들은 일련의 시스템 호출로 변환다. 시스템 서비스는 프로그램 제어, 상태 요청, 입출력 요청과 같은 여러 가지 범주로 분류될 수 있다. 프로그램 오류는 서비스를 위한 묵시적 요청으로 생각할 수 있다.

일단 시스템 서비스가 정의되면, 운영체제의 구조가 개발될 수 있다. 컴퓨터 시스템의 상태와 시스템 작업의 상태를 정의하는 정보를 기록하기 위해 여러 가지 테이블들이 필요하다.

새로운 운영체제의 설계는 힘든 일이다. 설계가 시작되기 전에 시스템의 목표가 잘 정의되는 것이 중요하다. 어떤 시스템 타입을 원하는 지가 여러 가지 알고리즘과 전략들 중에서 필요한 것을 선택하는 기초가 된다.

운영체제는 매우 크기 때문에 모듈화가 중요하다. 일련의 계층으로 시스템을 설계하거나 또는 마이크로커널을 사용하는 것이 좋은 기법으로 간주된다. 가상기계의 개념은 계층적 접근 방식을 취하며, 운영체제의 커널과 하드웨어 모두를 마치 전부 하드웨어 인 것처럼 취급한다. 심지어는 다른 운영체제들조차 이 가상기계 위에 적재될 수 있다. 전체 운영체제 설계 과정을 통해, 우리는 정책 결정을 구현의 상세(기법)와 분리하도록 꼭 주의해야 한다. 후에 정책 결정이 변경되어야 할 때 이러한 분리는 최대의 융통성을 제공한다.

현재 대부분의 운영체제는 시스템 구현 언어 혹은 고급 언어로 작성된다. 이러한 특성은 운영체제의 구현, 유지 관리, 이식성을 향상시킨다. 특정 기계 구성을 위한 운영체제를 만들기 위해 우리는 반드시 시스템 생성을 실행해야 한다. 프로세스와 커널 장애의 디버깅은 디버거와 코어 덤프를 분석하는 다른 도구들을 사용하여 이루어질 수 있다. DTrace와 같은 도구는 병목 지점을 발견하고 다른 시스템 동작을 이해하기 위하여 생산 시스템을 분석한다.

컴퓨터 시스템이 실행을 시작하려면 CPU가 초기화되어야 하고 펌웨어의 부트스트랩 프로그램을 실행시켜야 한다. 부트스트랩은 운영체제가 펌웨어에 저장되어 있는 경우 직접 운영체제를 실행할 수 있거나 운영체제가 메모리에 적재되고 실행될 때까지 펌웨어로부터 더 똑똑한 프로그램을 차례로 적재함으로써 일련의 과정을 마무리 지을 수 있다.

'컴퓨터 구조' 카테고리의 다른 글

프로세스 동기화에 대해서  (0) 2022.04.16
cpu 스케줄링  (0) 2022.04.16
다중 스레드 프로그래밍  (0) 2022.04.16
프로세스의 일련 과정  (0) 2022.04.16
컴퓨터 운영체제에 대해서..  (0) 2022.04.16
본 광고는 광고심의기준을 준수하였으며, 유효기간은 심의일로부터 1년입니다.

+ Recent posts