본문 바로가기

Study22

#22. [OS] 메모리의 영역 구분 1) 코드(Code) 영역 코드 영역은 실행할 프로그램의 명령어들이 저장되는 영역 프로그램이 실행될 때, 코드 영역의 명령어들이 CPU에 의해 순차적으로 실행된다. 읽기 전용으로 지정돼 있어, 프로그램이 실행 중에 수정되지 않는다. 2) 데이터(Data) 영역 데이터 영역은 전역 변수, 정적 변수, 상수 등의 데이터가 저장되는 영역 프로그램 시작부터 종료 시까지 유지된다. 초기화 데이터 / 초기화되지 않은 데이터로 구분 초기화된 데이터는 프로그래머가 지정한 초기값으로 초기화되며, 초기화되지 않은 데이터는 0 또는 null로 초기화된다. 3) 스택(Stack) 영역 스택 영역은 함수 호출과 관련된 정보들이 저장되는 영역 함수가 호출될 때마다 Stack Frame이 생성되어 스택 영역에 저장된다. Stack.. 2023. 5. 31.
#21. [OS] Synchronous(동기)와 Asynchronous(비동기)의 특징 Synchronous(동기)와 Asynchronous(비동기)는 프로그래밍 및 컴퓨터 시스템에서 발생하는 작업의 실행 방식과 제어 흐름에 대한 접근 방식을 나타내는 개념이다. Synchronous(동기) 동기 작업은 순차적으로 실행되며, 이전 작업이 완료될 때까지 다음 작업이 실행되지 않는다. 작업은 한 번에 하나씩 실행되며, 각 작업의 결과를 기다린 후 다음 작업이 시작된다. 작업은 직렬적으로 실행되고, 작업의 순서와 완료 여부에 따라 다른 작업들이 지연될 수 있다. 호출된 함수나 메서드가 완료되기를 기다리는 동안 일시 정지되므로 다른 작업을 수행할 수 없다. 상대적으로 직관적이고 간단한 구현에 적합하다. Asynchronous(비동기) 비동기 작업은 작업이 시작되고 완료되기를 기다리지 않고, 작업이 .. 2023. 5. 30.
#20. [OS] Blocking과 Nonblocking의 특징 Blocking과 Non-blocking은 멀티태스킹 작업이 잦은 컴퓨터 시스템에서 사용되는 단어이다. 1. Blocking : 작업이 완료될 때까지 호출자(프로그램)가 대기하는 동기 실행 방식. - 호출된 함수나 작업이 완료될 때까지 현재 실행 흐름이 중단되고, 제어권이 호출한 쪽에 있음. - 다른 작업을 처리하지 못하고 대기. - 간단하고 직관적이지만, 다른 작업에 영향을 주고 처리 속도가 저하될 수 있음. - 단일 스레드 환경이거나 간단한 작업에서 사용하는 것이 유리. - 동기 I/O 작업(입출력 작업)에서 사용. 2. Non-blocking : 작업이 완료되지 않아도 호출자가 블록되지 않고 다른 작업을 수행할 수 있는 비동기 실행 방식. - 호출된 함수나 작업이 완료되지 않아도 제어권이 호출한 쪽.. 2023. 5. 22.
#19. [DB] B+Tree 1. B+Tree란? 데이터베이스와 파일 시스템에서 사용되는 데이터 구조로 키-값 쌍을 저장하고 검색하는데 효율적인 방법을 제공한다. 빠른 검색, 삽입, 삭제 작업을 지원하면서 정렬된 데이터를 유지한다. 루트 노드 - 중간 노드 - 리프 노드 데이터는 이러한 형태로 구성되며 루트 노드가 최상위 노드, 리프 노드가 가장 하위 노드이며 데이터가 포함되어 있다. 2. B+Tree의 특징 정렬된 데이터 : 모든 노드는 키 값을 기준으로 정렬되어 있다. 균형 이진 트리 : 자동으로 균형을 유지하는 자기 균형 이진 검색 트리이다. 이는 모든 리프 노드가 같은 레벨에 있고, 트리의 높이가 최소로 유지되도록 한다. 다단계 인덱스 : 다단계 인덱스를 사용하여 데이터에 대한 빠른 접근을 가능하게 한다. 디스크 기반 작업에.. 2023. 5. 21.