728x90

Computer/CS 39

동기/비동기

동기/비동기 동기(Synchronous, 동시에 발생) 동시에 일어난다는 의미이다. 즉, 요청과 그 결과가 동시에 일어난다는 약속을 의미한다. 요청을 하면, 시간이 얼마나 걸리든 상관없이 요청한 자리에서 결과가 주어져야 한다. 요청과 결과가 모두 한 자리에서 동시에 일어나게 된다. 여러 노드 사이의 작업 처리 단위를 동시에 맞추겠다는 의도를 포함하고 있다. 설계가 매우 간단하고 직관적이지만 결과가 주어질 때까지 아무것도 못하고 대기해야 한다는 단점이 존재한다. 비동기(Asynchronous, 동시에 발생하지 않는) 동시에 일어나지 않음을 의미한다. 즉, 요청과 결과가 동시에 일어나지 않는다는 약속을 의미한다. 요청한 그 자리에서 결과가 주어지지 않는다 노드 사이의 작업 처리 단위를 동시에 맞추지 않아도 ..

Computer/CS 2024.03.12

32 bit OS vs 64 bit OS

32bit / 64 bit OS의 차이 컴퓨터의 워드 사이즈(Word size) word는 컴퓨터의 데이터 기본 처리 단위다. 32비트, 64비트는 워드 사이즈를 의미한다. 32비트 머신(CPU)라면 그 머신의 기본 데이터 처리 단위는 32비트가 되고, 64비트 머신이면 그 머신의 기본 데이터 처리 단위는 64비트가 된다. 가능한 CPU와 운영체제 조합 32비트 65비트가 CPU에도 운영체제에도 있다. CPU는 하드웨어, 운영체제는 소프트웨어 32비트 시스템과 64비트 시스템의 차이 메모리 주소 공간 크기의 차이 기본처리 단위가 다르다보니 프로세서의 레지스터의 크기에서 부터 차이가난다. 32비트 프로세서의 범용 레지스터는 32비트, 4바이트이다. 64비트 프로세서의 범용 레지스터는 65비트, 8바이트이다..

Computer/CS 2024.03.11

Rax Register

Rax Register 운영체제와 하드웨어 아키텍처 관점에서 중요한 역할을하는 레지스터 중 하나이다. 기본 개념 정의 및 특성 x86-64 아키텍처에서 사용되는 범용 레지스터이다. 64비트 시스템에서는 rax라는 이름을 가지며, 32비트에서는 eax, 16비트에서는 ax로 알려져있다. 역할 함수의 반환 함수 호출의 결과값을 저장하는데 주로 사용된다. 즉, 함수가 값을 반환할 때 rax에 그 값이 저장된다. 산술 연산 산술 연산 및 다른 명령어의 결과값을 저장하는 데에도 사용된다. 호환성 이전 16비트 및 32비트 시스템과 호환성을 위해, rax는 부분적으로 ax및 eax로 사용될 수 있다. 운영체제에서의 rax 레지스터 사용 시스템 호출 시스템 호출을 수행할 때, rax는 호출되는 시스템 호출의 번호를 ..

Computer/CS 2024.03.11

캐시(Cache)

캐시(Cache) Cache Memory 캐시 메모리는 속도가 빠른 장치와 느린 장치 간의 속도차에 따른 병목 현상을 줄이기 위한 범용 메모리다. 메인 메모리에서 자주 사용하는 프로그램과 데이터를 저장해두어 속도를 빠르게한다. 캐시의 지역성(Locality)를 이용한다. Cache Locality 캐시의 지역성이란, 데이터에 대한 접근이 시간적 혹은 공간적으로 가깝게 발생하는 것을 말한다. 캐시의 적중률(Hit rate)을 극대화 하여 캐시가 효율적으로 동작하기 위해 사용되는 성질이다. 캐시의 지역성은 공간 지역성(Spatial Locality)과 시간 지역성(Temporal Locality)으로 나뉜다. 공간 지역성 : 최근에 사용했던 데이터와 인접한 데이터가 참조될 가능성이 높다는 특성 시간 지역성 ..

Computer/CS 2024.03.11

CPU 스케줄링 알고리즘

CPU 스케줄링 알고리즘 CPU 스케줄링은 다중 프로그램 환경에서 CPU의 사용 시간을 효율적으로 분배하기 위한 방법이다. 이를 통해 시스템의 성능을 최적화하고, 대기시간을 최소화하며, CPU 사용률을 극대화하는 것이 목표다. 알고리즘 종류 선입선출 스케줄링(FCFS : First-Come, First-Served Scheduling) 이 알고리즘은 먼저 도착한 프로세스부터 처리하는 알고리즘이다. 프로세스 실행 시간을 예측하기 쉽고 단순하고 공평하지만 CPU 버스트 시간이 긴 프로세스가 먼저 도착하면 다른 프로세스들은 긴 대기 시간을 감수해야 하는 호흡성문제가 발생할 수 있다. 최단 작업 우선 스케줄링(SJF : Shortest Job First Scheduling) CPU 버스트 시간이 가장 짧은 프로..

Computer/CS 2024.03.02

데드락(Dead Lock)/교착상태

데드락(Dead Lock)/교착상태 두 개 이상의 프로세스나 쓰레드가 서로 자원을 얻지 못해서 다음 처리를 하지 못하는 상태이다. 무한히 다음 자원을 기다리게 되는 상태를 말한다. 시스템 적으로 한정된 자원을 여러곳에서 사용하려고 할 때 발생한다 데드락의 발생조건 4가지 모두 성립해야 데드락 발생(하나라도 성립하지 않으면 데드락 문제 해결 가능하다.) 상호 배제(Mutual exclusion) 자원은 한 번에 한 프로세스만 사용할 수 있다. 점유 대기(Hold and Wait) 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 존재해야 한다. 비선점(No Preemption) 다른 프로세스에 할당된 자원은 사용이 끝날때까지 강제..

Computer/CS 2024.03.02

문맥교환(Context Switching)

문맥교환(Context Switching) 하나의 프로세스가 CPU를 사용중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기위해, 이전의 프로세스의 상태(문맥)을 보관하고 새로운 프로세스의 상태를 적재하는 작업을 말한다. 이때 한 프로세스의 문맥은 그 프로세스의 프로세스 제어블록(PCB)에 기록되어 있다. PCB(Process Control Block) 운영체제가 시스템 내의 프로세스들을 관리하기 위해 프로세스 마다 유지하는 정보들을 담는 커널 내 자료구조로 커널 주소 공간의 data 영역에 존재한다. PCB에 저장되는 내용들 Process 상태 : CPU를 할당해도 되는지 여부를 결정한다. PC 값 : 다음에 수행할 명령어를 가리킨다. CPU Register : CPU연산을 위해 현 시점에 레지스터..

Computer/CS 2024.03.01

세마포어/뮤텍스_Semaphore/Mutex

Semaphore/Mutex 프로세스 간 메시지를 전송하거나, 공유메모리를 통해 공유된 여러 개의 프로세스가 동시에 접근하면 Cirtical section 문제가 발생 할 수 있다. 이를 해결하기 위해 데이터를 한 번에 하나의 프로세스만 접근할 수 있도록 제한을 두는 동기화 방식을 취해야 한다. 동기화 도구에는 대표적으로 뮤텍스와 세마포어가 있다. 세마포어_Semaphore 공유된 자원의 데이터 혹은 임계영역(Critical section)등에 여러 프로세스 혹은 쓰레드가 접근하는 것을 막아준다. 사용하고 있는 쓰레드/프로세스의 수를 공통으로 관리하는 하나의 값을 이용해 상호배제를 달성한다. 공유 자원에 접근할 수 있는 프로세스/쓰레드의 최대 허용치만큼 동시에 사용자가 접근할 수 있으며, 각 프로세스는 ..

Computer/CS 2024.03.01

묵시적 리스트(implicit list)

묵시적 리스트 구현 모든 할당기는 블록 경계를 구분하고, 할당된 블록과 가용블록을 구분하는 데이터 구조를 필요로 한다. 일반적인 방법으로는 추가적으로 1 블록을 사용해 블록 앞에 블록의 크기를 저장하는 방법이 있다. 이때 추가적으로 사용되는 1워드를 헤더라고 한다. 헤더는 블록 크기와 블록이 할당 되었는지, 혹은 가용상태인지를 인코딩한다. 데이터 이후에 사용되지 않은 패딩이 따라올 수도 있는데, 이들의 가변적이다. 외부 단편화를 극복하기 위한 할당기의 전략일 수도, 정렬 요구 사항일수도 있다. 특별한 마지막 블록(1/0)이 필요하다. 에필로그 헤더라고 부른다. 마지막 노드를 식별하고 리스트 무결성을 유지하는데 중요한 역할을 한다. 리스트 순회 및 특수 기능 구현에도 활용할 수 있다. 할당할 블록 결정하기..

Computer/CS 2024.02.18
728x90