본문 바로가기

IT/OS10

Mutex, Semaphore, Critical Section Critical Section - 다중 프로그래밍 OS에서 여러 프로세스가 데이터를 공유할 때, 코드 내에서 공유 데이터에 접근하는 부분 - 한 프로세스가 공유 데이터 코드 부분(Critical Section)을 수행 도중 다른 프로세스가 접근하는 경우, 데이터의 무결성이 보장되지 않음 -> 한 프로세스가 데이터를 점유하는 동안 다른 프로세스는 접근할 수 없게 막아야 함 Mutex Semaphores Critical Section을 구현하기 위한 기술 중 하나 Critical Section이 적용되는 공유 데이터가 하나 Critical Section이 적용되는 공유 데이터가 하나 이상 lock으로 자원 점유, 해제 Count로 자원 점유, 해제 소유 가능 소유 불가능 Mutex를 소유하고 있는 쓰레드만 .. 2022. 2. 15.
Process, Thread Process - 실행 중인 Program (-> 메모리에 할당되어 돌아가고 있는 프로그램) - OS에게서 자원을 할당 받는 작업 단위 Thread - Process 내에서 실제로 작업을 수행하는 주체 - 프로세스가 할당 받은 자원을 이용하는 실행 단위 - 한 프로세스 내의 각 쓰레드들은 주소 공간이나 자원을 공유할 수 있으며 독립적인 작업을 수행해야 하므로 각자 Stack과 PC Register 값을 가짐 Thread의 필요성 - Process보다 생성 및 종료 시간, Context Switching 시간이 짧음 - 쓰레드 간 통신에 Kernel의 도움 필요 없음 * Stack을 쓰레드마다 독립적으로 할당하는 이유 : Stack은 함수 호출 시 전달되는 인자, 되돌아갈 주소값 및 함수 내에서 선언하는 .. 2022. 2. 15.
OS 부팅 과정 1. 컴퓨터 전원 ON 2. ROM에서 BIOS(Basic Input Output System) 로드 - 기동 순서 설정 - POST(Power On Self Test) 테스트 수행 : RAM, 디스크, 키보드 기타 부품의 정상 여부 확인 3. Boot Loader 읽기/기동 - BIOS가 MBR(Master Boot Record)을 찾아 복사하여 메모리에 로드 (디스크의 첫 번째 섹터에 저장됨) - MBR에 있는 Boot Loader가 Boot Sector Record를 읽어 RAM 메모리에 로드 4. OS 로드/기동 - Boot Sector Record가 OS의 나머지 부분을 메모리로 로드 - 시스템 파일 및 사용자가 저장한 기동 스크립트 로드 - OS 로드 후, 컴퓨터의 통제권을 OS로 전달 MBR.. 2022. 2. 12.