본문 바로가기

Computer-Sience/OS6

[OS] Byte Order 1. Bit(비트) : 컴퓨터가 데이터를 처리하기 위해 사용하는 데이터의 최소 단위 이진(Binary)으로 구성(0과 1의 형태로 저장) 2. Byte(바이트) : 8개의 비트의 묶음을 나타내는 단위 컴퓨터의 기억장치 크기의 기준 문자의 표현을 위한 기본 단위 1 Byte : 확장된 아스키 코드(ASCII) - 7bit 2 Byte : Unicode 3. Byte Order(바이트 오더) : 컴퓨터 메모리에 저장되는 순서를 의미 빅 엔디안 : 낮은 메모리 주소에 데이터의 높은 바이트(MSB : Most Significant Bit)부터 저장하는 방식 IBM, RISC기반의 컴퓨터에서 사용 수의 대소 비교에 빠름 소프트웨어 디버깅에 강함 네트워크 바이트 오더의 가장 흔한 포맷 리틀 엔디안 : 낮은 메모리 .. 2023. 8. 6.
[OS] 데드락(Deadlock, 교착 상태) 1. 데드락 두 개 이상의 프로세스나 스레드가 서로 처리할 자원을 이용하지 못해서 다음 작업을 하지 못하는 상태를 나타내며, 상호 간의 작업이 끝나기만을 무한히 대기하는 상태를 일컫는다. 이러한 상태를 데드락(Deadlock)이라고 하며, 교착상태라고도 한다. 2. 데드락 발생 조건 상호 배제(Mutual exclusion) : 자원은 한 번에 한 개의 프로세스만 사용이 가능 점유 대기(Hold and wait) : 하나의 이상의 자원을 점유하며, 다른 프로세스에 할당된 자원을 점유하기 위해서는 대기하는 프로세스가 존재 비선점(No preemption) : 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 탈취가 불가능(대기) 순환 대기(Circular wait) : 프로세스의 집합에서 각 프로세스가 요.. 2023. 8. 4.
[OS] 메모리 구조 운영 체제의 프로그램이 실행되려면 실행되려는 프로그램(코드)이 메모리에 먼저 적재되고, 추가로 프로그램에서 사용할 변수를 할당할 메모리 또한 필요로 한다. 위의 그림을 토대로 운영체제에서 프로그램(한 개 이상의 프로세스로 이루어진 집합체)에 배정하는 메모리 영역은 4가지 영역으로 구분되어 있다. Code 영역 Data 영역 Heap 영역 Stack 영역 Code -> Data -> Heap -> Stack 순으로 Low Memory -> High Memory로 분류된다. Low Memory : logical address가 존재하는 메모리 공간 High Memory : logical address를 갖고 있지 않는 메모리 공간 1. Code 영역 : 메모리에 배정된 Code 영역은 이름 그대로 프로그램의.. 2023. 7. 13.
[OS] Process(프로세스) / Thread(스레드) 프로그래밍을 시작하게 되면서 과거에는 단어의 정확한 이해가 없이 대략적인 의사전달만을 위한 단어들을 말하는 습관을 고치는 계기가 되었다. 그중 하나가 스레드와 프로세스였는데 이 둘은 확연히 다른 단어이며 해당 포스팅에서 다뤄볼 것이다. 1. Process(프로세스) 운영체제로부터 자원을 할당받은 작업의 단위이며, 각 작업에는 운영체제로부터 부여받은 프로세스 식별자(PID)를 가지고 있다. 한 개의 프로세스에는 하나 이상의 스레드를 가지고 있고, 프로세스 간에 통신을 하려면 IPC(Inter Process Communication)를 요구한다. 프로세스는 Code / Stack / Heap / Data의 4가지 영역으로 구분되어 있으며, Code / Data를 정적 영역으로, Stack / Heap을 동적.. 2023. 2. 9.
[OS] Sync / Async / Blocking / Non-Blocking 프로그래밍을 시작한 사람들 중 동기 및 비동기에 대하여 많이 접해봤을 것이다. Syncronous (동기) :동시 발생[존재]하는 Asynchronous(비동기) : 동시에 존재[발생] 하지 않는 이라는 단어의 뜻을 가지고 있으며, 단어만 보았을 때에는 이해가 바로 되지 않을 수 있다. 동기와 비동기는 특정 작업들이 있을 때, 작업 완료의 여부와 관련된 순서에 관한 것이고, 유사하지만 다른 개념인 Blocking / Non-block도 같이 알아볼 것이다. Blocking/Non-blocking : 프로세스의 유휴 상태(제어권)에 관한 것 - Blocking : 호출된 함수가 자신의 작업을 모두 마칠 때까지 호출한 함수가 제어권 없이 대기 - Non-blocking : 호출된 함수가 리턴 후 호출한 함수.. 2023. 2. 8.
[CS] Kernel(커널) 일반적으로 Mac이나 Windows 같은 OS(운영체제)에 대하여는 많이 들어봤을 것이나 OS와 밀접한 연관이 있는 커널에 대해서는 많이 들어보지 못했을 것이다. ‣ 커널(Kernel) 사전적 정의로 "알맹이" 또는 "핵심"이라는 뜻을 가지고 있는 커널은 말 그대로 운영체제의 "핵심"이다. 커널은 운영체제에서 컴퓨터 자원을 관리하는 역할을 수행하기 때문이다. 소프트웨어의 요청(System Call)으로 하드웨어의 자원(CPU 연산, Disk에 Data의 저장 및 삭제 등)을 이용하기 위하여 커널에서는 중간다리 역할을 수행하는데, 프로그램이 직접적인 하드웨어의 자원에 접근하는 것을 막기 위하여 존재하는 것이다. 커널은 소프트웨어의 요청이 하드웨어의 자원에서 처리될 수 있도록 변환하는 작업을 수행하는데, 이.. 2023. 2. 2.