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

 

▶클릭◀ 병원 약국에서 지출한 병원비 약값 최대 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년입니다.

+ Recent posts