전체 글 61

OSTEP 16장

베이스와 바운드 레지스터는 메모리 낭비가 심함 → 스택과 힙 사이의 공간은 사용되지 않더라도 물리 메모리에 할당되기 때문이 문제를 해결하기 위해 세그멘테이션 등장세그멘테이션특정 길이를 가지는 연속적인 주소 공간→ MMU에논리적인 주소 공간인 세그먼트마다 베이스와 바운드 쌍이 존재 주소 공간에는 코드, 스택, 힙 세 종류의 세그멘트가 있다.세그멘테이션을 사용하면 운영체제는 각 세그멘트를 물리 메모리의 각기 다른 위치에 배치할 수 있다.사용되지 않는 가상 주소 공간이 물리 메모리를 차지하는 것을 방지할 수 있다.64KB 물리 메모리에 3개의 세그멘트(스택, 코드, 힙)과 운영체제용으로 예약된 16KB 영역이 존재현재 사용 중인 메모리에만 물리 공간이 할당됨바운드 레지스터에는 세그먼트의 크기를 저장가상 메모리..

운영체제(OSTEP) 2024.10.31

시스템 콜

시스템 콜시스템 콜은 유저 프로그램이 커널 기능을 사용할 수 있게 해주는 인터페이스 시스템 콜은 커널 모드에서 실행되며, 작업을 마치면 유저 모드로 전환된다.유저모드 VS 커널 모드유저모드매우 제한된 환경에서 명령어 실행 가능, 메모리 영역도 제한적으로 사용 가능커널 모드어떤 명령어도 실행 가능하며, 시스템 내의 어떤 메모리 위치도 접근 가능시스템 콜의 실행 과정 - PINTOS1. 응용 프로그램이 시스템 콜이 필요한 시점에 도달EX) 파일을 열기 위해 open() 함수 호출 // 여기서 open()은 래퍼함수// 경로 - PINTOS-KAIST/lib/user/syscall.c int open(const char *file) { return syscall1(SYS_FILESIZE, fd);}2...

커널

커널운영체제의 핵심 부분→ 시스템의 자원을 관리 프로세스 관리, 메모리 관리, 파일 시스템 관리, 장치 드라이버 관리, 하드웨어 자원 관리 등등커널은 사용자와 직접 상호작용 할 수 없다.⇒ 명령어 해석기를 사용하여 커널과 사용자가 상호작용함 대표적인 명령어 해석기가 쉘 프로그램 - 시스템이 최초로 구동될 때, 커널은 메모리에 적재되며, 메모리에 상주하면서 여러 기능 제공- 가상 자원과 물리 자원을 모든 사용자에게 할당 및 제어- 시스템 콜 인터페이스 제공 응용 프로그램과 커널 간의 인터페이스 제공- 입출력 관리 // 디스크 읽기/쓰기, 네트워크 통신, 키보드 입력, 화면 출력 등 포함- 추상화 제공 // 복잡한 작업들을 추상화하여 간단한 인터페이스 제공 Ex) 시스템 콜- 인터럽트 처리 // 하..

원자적 실행 (Atomic Operation)

원자적 실행이란중단 없이 실행되고, 중간에 다른 사람이 수정할 수 없는 즉, 한 번에 실행되는 ‘최소 단위 연산’을 의미병령 프로그래밍과 멀티 스레딩 환경에서 데이터 무결성을 보장 여러 스레드나 프로세스가 같은 데이터에 접근할 때 발생할 수 있는 충돌 방지 Ex) 특수 목적 명령어 ‘TestAndSet()원자적 실행 X인 경우void lock(lock_t *mutex) { while(mutex->flag == 1); mutex-> flag = 1;}1. 스레드 1이 while 실행 후, 스레드 2가 CPU를 선점2. 스레드 2가 while문을 실행하고, flag 값을 1로 수정3. 스레드 1이 다시 CPU를 선점하고 flag 값을 1로 수정-> 이 경우 스레드 1과 스레드 2가 공유자원에 동시..

교착상태

교착상태란둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 발생 (비공유 자원)→ 자원을 해제를 수신할 때까지 현재 보유한 자원도 해제할 수 없음→ 교착상태 발생 시 작업이 정지되어 더는 명령어 수행을 못함→ 병행 처리와 자원 공유에 따른 부작용하나의 프로세스는 일반적으로 여러 자원을 사용OS가 교착상태를 해결하지 못하면 시스템 운영자나 사용자는 작업을 교체하거나 종료하는 외부 간섭으로 해결해야 함교착 상태는 하나 이상의 작업에 영향을 주기 때문에 무한 대기나 기아 상태보다 더 심각한 문제교착상태 발생 조건교착 상태는 네 가지 조건을 만족할 때 발생1. 상호배제 - 한 번에 한 프로세스만 해당 자원을 사용할 수 있어야 함2. 점유와 대기 - 자원을 최소한 하나 정보는 보유하고..

경쟁상태(Race Condition)

경쟁상태란(Race Condition)여러 프로세스나 스레드가 동시에 공유 자원에 접근할 때, 실행 순서나 타이밍에 따라 예측할 수 없는 결과가 발생할 수 있는 상황을 의미한다.이는 단순히 접근 순서에 따른 결과 차이뿐만 아니라, 연산의 중간 단계에서 다른 프로세스나 스레드의 개입으로 인해 발생하는 데이터 불일치나 예기치 않은 동작을포함→ 공유 자원에 대한 동시 접근으로 인해 데이터 일관성이 깨지고 프로그램의 정확성과 신뢰성이 보장되지 않은 상황Ex)공유 자원 A의 초기값이 5인 상황에서 두 스레드1,2가 동시에 공유 자원 A에 접근하려는 경우스레드 1 : A에 4를 곱함스레드 2: A에 10을 더함단, 해당 연산들이 원자적이지 않고 여러 단계로 이루어진다고 한다.1. 메모리에서 A 값을 읽음2. 연..

세마포어

세마포어공유 자원에 대한 접근을 조절하기 위한 동기화 도구 세마포어는 초기값에 의해 동작이 결정되므로 가장 먼저 초기화를 해야한다.세마포어는 정수 값을 갖는 객체로서 두 개의 함수로 조작 POSIX 표준의 두 개 함수 // 두 함수는 원자적으로 실행 1. sem_wait()2. sem_post()#includesem_t s;sem_init(&s, 0, 1);세마포어 초기화세마포어 s를 선언한 후, 세 번째 인자로 1을 전달하여 세마포어 값을 1로 초기화한다.두 번째 인자는 OSTEP의 모든 예제에서 0 이 값이 0인 경우 같은 프로세스 내의 쓰레드 간에 세마포어를 공유한다는 것을 의미 ** 초기화 후 sem_wait(), sem_post() 함수들을 호출하여 세마포어를 다룰 수 있다. 두 루틴은 다수 쓰..

임계영역, 공유자원, Lock, Mutex

임계영역여러 프로세스 또는 스레드가 공유하는 자원에 접근하는 코드 부분을 의미 즉, 동시에 둘 이상의 프로세스/스레드가 실행되면 문제가 발생할 수 있는 코드 영역을 의미공유자원멀티스레딩 또는 멀티프로세싱 환경에서 둘 이상의 스레드나 프로세스가 동시에 접근하거나 사용할 수 있는 시스템 자원이나 데이터를 의미 Ex) 전역변수, 데이터베이스 연결 객체, 파일, 네트워크 소켓, 프린터, 메모리 버퍼, 카운터 변수큐 또는 스택, 로깅 시스템 등등락락은 하나의 변수이다.락을 사용하기 위해서는 락 변수를 선언해야 한다. ** 락 변수는 락의 상태를 나타냄두 가지 상태- 사용 가능 상태 ( unlocked, free )- 사용중 (acquired) 즉, 임계 영역에서 정확히 하나의 쓰레드가 락을 획득한 상태 락 자료 ..

프로세스와 스레드

프로세스란 ??프로세스는 머신(컴퓨터)를 추상화한 개념이다.- 각 프로세스는 마치 전체 컴퓨터를 독점적으로 사용하는 것처럼 동작할 수 있음 서로 다른 프로세스는 서로의 DRAM, 즉 서로의 주소 공간에 접근할 수 없기 때문 개별 컴퓨터에서 각 프로그램을 수행하는 것과 동일하므로 머신을 추상화한 개념 각 프로세스는 자신만의 가상 메모리, 가상 CPU, 파일들을 갖는다. 프로세스 간 통신 메커니즘(IPC)를 통해 프로세스들 간의 제한적인 정보 교환이 가능함 가상 메모리 - 각 프로세스는 가상 주소 공간을 갖는다. 가상 CPU - 각 프로세스는 CPU를 혼자 점유한다는 착각을 하게 된다. // 시분할 스케줄링 기법 활용 파일 - 각 프로세스는 자신만의 파일 디스크립터를 갖는다.프로세스는 실행 중..

CDN

여러 지역에 설치된 캐시 서버들을 사용하여 본 서버로 들어오는 요청들을 분산 처리하는 서비스 - 캐시 서버 활용한 분산 처리 본 서버에 집중되는 트래픽을 여러 캐시 서버로 분산시켜 처리하게 함 본 서버는 캐시 서버에 데이터를 한 번만 전송하면 됨 - 지리적 접근성 사용자와 가까운 위치의 캐시 서버에서 콘텐츠를 제공하여 전송 속도 향상- 성능 향상 다수의 사용자 요청을 효율적으로 처리하고, 응답 시간을 단축시킴 - 안정성 증가 본 서버의 부하를 줄이고, 서버 다운 위험을 감소시킴 - 대규모 트래픽 처리 갑작스러운 트래픽 증가에도 안정적으로 대응할 수 있음 **대용량 데이터를 정송하는 서비스에 적합Ex) 유튜브, 넷플릭스 AWS의 CloudFront, CloudFlare, Akamai 등이 전 세..