분류 전체보기

·CS/OS
동기화(Synchronization)여러 프로세스가 공유하는 자원의 일관성을 유지하는 것을 동기화라고 한다.여러 프로세스가 서로 협력해 공유 자원을 사용하는 상황에서 경쟁 조건(Race Condition)이 발생하면 공유 자원의 신뢰성이 떨어진다. 이를 방지하기 위해 프로세스들이 공유자원을 사용할 때 특별한 규칙을 만든다.프로세스 간 메시지를 전송하거나 공유 메모리를 통해 공유된 자원에 여러 개의 프로세스가 동시에 접근하면 임계 영역 문제가 발생할 수 있다.이를 해결하기 위해 데이터를 한 번에 하나의 프로세스만 접근할 수 있도록 제한을 두는 방식이 동기화이다. Race Condition(경쟁 조건)여러 프로세스 혹은 스레드가 공유자원에 동시에 접근할 때 공유자원에 대한 접근 순서에 따라 실행 결과가 달라..
·CS/OS
TLB(Translation Lookaside Buffers)이전에 살펴봤던 페이징에서 가상 주소와 실제 물리 메모리의 주소를 매핑해 주는 페이지 테이블이라는 자료구조가 있었다. 운영체제 - 페이징과 세그먼테이션세그멘테이션(Segmentation)세그멘테이션은 메모리 관리 기법 중 하나로 메모리의 효율적인 사용과 프로그램의 보다 유연한 배치를 가능하게 해 준다. 세그멘테이션은 주소 공간을 논리적으로 분hotechstory.tistory.com 페이지 테이블은 물리 메모리에 저장되는데 그로 인해서 프로세스가 가상 주소를 통해 메모리에 접근하게 되면 페이지 테이블을 참조하여 실제 물리 주소를 얻게 되는 주소 변환(Address Translation) 과정이 이뤄지게 된다.문제는 이러한 주소 변환 과정을 수행..
·CS/OS
페이지 교체 알고리즘이전 포스팅에서 요구 페이징에 대해서 알아보았다. 요구 페이징에서 Backing Store에 있는 페이지를 물리 메모리로 불러오는 작업을 진행하게 되는데 여기서 물리 메모리에 빈 공간이 없을 경우 페이지 교체 알고리즘을 통해서 기존의 페이지를 바꿔주는 작업이 필요하게 된다. 운영체제 - 요구 페이징요구 페이징(Demand Paging)이전에 가상 메모리 포스팅을 할 때 했던 얘기가 있는데 만약 내가 하고 싶은 게임의 용량이 20GB인데 어떻게 16GB 메모리에서 실행될 수 있을까? 라는 얘기를 잠깐 했었다.hotechstory.tistory.com 페이지 교체 알고리즘은 빈 공간이 없는 물리 메모리 공간에서 희생당할 프레임(Victim Frame)을 골라 교체하는 알고리즘을 의미한다...
·CS/OS
요구 페이징(Demand Paging)이전에 가상 메모리 포스팅을 할 때 했던 얘기가 있는데 만약 내가 하고 싶은 게임의 용량이 20GB인데 어떻게 16GB 메모리에서 실행될 수 있을까? 라는 얘기를 잠깐 했었다. 실행에 필요한 메모리 용량보다 훨씬 적은 메인 메모리를 가지고 있으면서도 돌아갈 수 있었던 이유는 실행에 필요한 부분만 메모리에 올려서 실행했기 때문인데 이러한 기능을 해주는 것이 요구 페이징(Demand Paging)이다. 실제로 게임을 다운받아 보거나 직접 프로그램을 개발해 보면 굳이 필요 없는(프로그램이 돌아가는데 필수적이지 않은) 파일들이 많은 것을 알 수 있다. 이처럼 프로세스를 실행 시 모든 부분이 필요하지 않기 때문에 실행에 필요한 부분만 메모리에 올려 메인 메모리에 올라가는 프로..
·CS/OS
세그멘테이션(Segmentation)세그멘테이션은 메모리 관리 기법 중 하나로 메모리의 효율적인 사용과 프로그램의 보다 유연한 배치를 가능하게 해 준다. 세그멘테이션은 주소 공간을 논리적으로 분할하여 각각의 세그먼트에 대해 대해 별도의 베이스와 바운드 쌍을 할당하여 메모리 관리 장치에 저장하는 방식이다. 세그먼트(Segment)세그먼트는 특정 길이를 가지는 연속적인 주소 공간을 나타내며 일반적으로는 코드, 스택 및 힙 등과 같이 프로그램이나 데이터의 논리적인 부분을 나타낸다. 세그멘테이션을 사용하면 운영 체제는 각 세그먼트를 메모리에 별도로 배치함으로써 프로그램이나 데이터를 물리 메모리의 다양한 위치에 할당할 수 있다. 또한 사용되지 않는 가상 주소 공간이 물리 메모리를 차지하는 것을 방지할 수 있다. ..
·CS/OS
주소 변환(Address translation)주소 변환은 프로그램이 사용하는 가상 주소를 실제 물리 메모리 상의 주소로 매핑하는 과정을 의미한다. 주소 변환은 하드웨어적으로 이루어지며 프로세서가 메모리 참조 명령어를 수행할 때마다 발생한다. 운영 체제는 메모리 관리자 역할을 수행하며 물리 메모리의 할당 및 회수, 가상 주소 공간과 물리 주소 공간의 매핑 등을 담당한다. 이를 위해 운영 체제는 메모리의 사용 현황을 파악하고 있어야 하며 프로세스 간의 메모리 보호와 공유를 적절히 제어해야 한다. 동적 재배치(Dynamic Relocation)동적 재배치는 프로세스의 주소 공간을 실행 시간에 동적으로 물리 메모리 상의 다른 위치로 이동할 수 있게 해주는 기술로 이를 통해 운영 체제는 메모리 관리를 보다 유연..
·CS/OS
초기 시스템초기 컴퓨터는 하나의 메모리에 단 하나의 프로세스만 올릴 수 있었다.위의 그림과 같이 물리 메모리에 하나의 실행 중인 프로세스가 존재하였으며 OS를 제외한 나머지 메모리를 사용했다.하지만 하나의 프로세스만 실행할 수 있고 메모리 공간을 다 차지하기 때문에 매우 안 좋은 활용성과 효율성을 보여줬다.시간이 흘러 멀티 프로그래밍을 지원하게 되면서 사람들은 컴퓨터를 더 효율적으로 사용하게 되었다. 멀티 프로그래밍과 시분할앞서 설명했던 초기 시스템의 문제를 해결하기 위해 시분할(Time Sharing) 기법을 사용하여 여러 개의 프로그램을 하나의 메모리에서 실행할 수 있도록 멀티 프로그래밍을 할 수 있게 메모리 구성이 바뀌었다.하나의 메모리에 여러 개의 프로세스를 올려 실행하게 되면서 메모리의 활용성과..
·CS/OS
PCB(Process Control Block)프로세스 제어 블록이라고도 불리는 PCB는 운영체제에서 프로세스에 대한 메타데이터(프로세스의 정보)를 저장한 구조체를 말한다.  프로세스가 생성되면 운영체제는 해당 PCB를 생성하게 된다. 그 이유는 각각의 프로세스는 프로세스 식별번호(PID)를 할당하게 되는데 운영체제는 다중 프로그래밍을 지원하므로 모든 프로세스를 추적해야 된다. 이때 PCB를 사용하여 프로세스의 실행 상태를 추적한다. 또한 PCB가 만들어지면 CPU에 저장되었다가 프로세스가 완료되면 PCB도 함께 제거된다. 프로세스의 메타데이터들이 PCB에 저장되어 관리된다. 이는 프로세스의 중요한 정보를 포함하고 있기 때문에 일반 사용자가 접근하지 못하도록 보호된 메모리 영역 즉, 커널 스택의 가장 앞..
·CS/OS
시스템 콜(System Call)시스템 콜은 운영 체제의 커널이 제공하는 서비스에 대해 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스이다.시스템 콜도 인터럽트의 일종으로 소프트웨어 인터럽트로 사용되기 때문에 이전 포스팅인 인터럽트를 참고해 보자. 운영체제 - 인터럽트(Interrupt)인터럽트(Interrupt)인터럽트는 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행 중인 작업을 일시 중단하고, 발생된 상황을 우선 처리한 후 실행 중이던 작업으로 복귀하hotechstory.tistory.com 이전에 포스팅한 인터럽트에서 살펴본 것처럼 운영 체제는 이중 동작 모드를 통해서 커널 모드와 사용자 모드로 구분하여 동작하게 되는데 특정 부분(하드웨어 접근과 같은 작업)에서 ..
·CS/OS
인터럽트(Interrupt)인터럽트는 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행 중인 작업을 일시 중단하고, 발생된 상황을 우선 처리한 후 실행 중이던 작업으로 복귀하여 계속 처리하는 것을 말한다.즉, 인터럽트는 어떤 신호가 들어왔을 때 CPU를 잠깐 정지시키고 다른 작업을 처리한다.인터럽트가 발생되면 인터럽트 핸들러 함수가 모여 있는 인터럽트 벡터로 가서 인터럽트 핸들러 함수가 실행된다. 인터럽트가 필요한 이유선점형 스케줄링 알고리즘을 보면 어떤 프로세스가 Running 상태에서 다른 프로세스로 교체하기 위해 스케줄러가 작업을 중단시키게 된다.프로세스가 스스로 결정하는 것은 진행 중에 I/O 장치 혹은 다른 작업을 진행해야 해서 Block 상태가 되는 것과 프로세스가 종료되서..
·CS/자료구조
해시(Hash)해시는 데이터를 다루는 기법 중 하나로 검색과 저장을 아주 빠르게 하는 자료구조이다.데이터를 저장할 때 키-값 형태로 데이터가 존재하고 키 값이 배열의 인덱스로 저장되기 때문에 검색과 저장이 빠르게 일어난다.해시 자료구조는 데이터를 키-값 형태로 저장해 준다고 했는데 그러기 위해서 키 값을 고정된 길이의 값으로 바꿔주는 해시 함수와 해싱이라는 과정 그리고 키-값 데이터를 저장해 주는 해시 테이블을 이해해야 한다.  해시 함수(Hash Function)와 해싱(Hashing)해시 함수라고 불리는 것으로 임의의 크기를 가진 데이터를 고정된 데이터의 크기로 변환시키는 알고리즘이다.해시 함수는 키 값을 고정된 길이의 hash로 변환하는 역할을 한다. 그림과 같이 사람의 이름을 해시 함수를 거쳐서 ..
·CS/알고리즘
완전 탐색 알고리즘완전 탐색 알고리즘은 모든 경우의 수를 시도하는 기법으로 가장 기본적이고 간단한 유형의 알고리즘이다.될 수 있는 모든 조건 혹은 모든 조합을 다 대입해보며 해답을 찾는 알고리즘이다.모든 경우의 수를 전부 탐색하기 때문에 100% 정확성을 보장하지만 반대로 높은 시간 복잡도를 가진다. 완전 탐색 알고리즘에는 선형 구조와 비선형 구조로 나눌 수 있다.선형 구조브루트 포스모든 경우의 수를 다 검사하여 원하는 값을 탐색하는 방법경우의 수가 적을 때 사용하는 것이 좋다.비트마스크이진수의 비트 연산을 통해 경우의 수를 줄여가며 탐색하는 방법비트 마스크를 사용하여 하나의 변수에 여러 개의 상태 정보를 저장할 수 있으며 이를 통해 복잡한 조건문을 간단하게 처리할 수 있다. 경우의 수가 많을 경우에 유..
·CS/자료구조
힙(Heap)힙은 완전 이진트리의 일종으로 부모 노드와 자식 노드 간에 특정한 조건을 만족하는 자료구조이다.이진 트리에 대해서 잘 모른다면 밑의 글을 읽고 나서 힙을 공부해 보자. 자료구조 - 이진 트리(Binary Tree)이진 트리(Binary Tree)이진 트리는 각 노드의 자식 노드(차수)의 개수가 2 이하로 구성된 트리를 뜻한다.트리 영역에서 가장 많이 사용되는 형태로 트리를 1차원 배열로 표현해준다. 이진 트리의hotechstory.tistory.com 힙의 특징힙 자료구조에는 여러 가지 특징이 있는데 하나씩 살펴보자.1. 힙은 완전 이진트리다. 즉, 왼쪽에서 오른쪽으로 채워지는 마지막 수준을 제외하고 트리의 모든 수준이 완전히 채워진다. 이 속성은 트리가 배열을 사용하여 효율적으로 표현되도록..
·CS/자료구조
레드/블랙 트리(Red/Black Tree)레드/블랙 트리는 균형을 유지하기 위해 일련의 규칙을 사용하는 자가 균형 이진 탐색 트리의 유형으로 트리의 초기 모양에 관계없이 삽입, 삭제, 검색과 같은 작업에 대한 O(log n) 시간 복잡도를 보장한다.레드/블랙 트리는 각 수정 후 트리를 조정하기 위해 간단한 색상 코딩 체계를 사용하여 자체 균형을 유지한다.레드/블랙 트리는 각 노드가 빨간색 또는 검은색일 수 있는 색상이라는 추가 속성을 갖는 자체 균형 이진 탐색 트리이다.삽입 및 삭제 중에 균형을 유지하여 효율적인 데이터 검색 및 조작을 보장한다. 레드 블랙 트리의 속성레드/블랙 트리에는 여러 가지 속성들이 있는데 이러한 속성들을 알아야 동작 과정을 이해할 수 있다.어떤 속성들이 있는지 하나씩 살펴보자...
·프로젝트
Spring Netflix Eureka 적용 이전 포스팅에서 Spring Cloud Gateway를 적용시켜 보았다. 이번에는 Service Discovery 서버인 Spring Netflix Eureka가 뭔지 살펴보고 현재 SSM 프로젝트에 적용시켜 보자. Spring Netflix EurekaEureka를 프로젝트에 적용시키기 전에 먼저 Eureka가 뭔지를 살펴보고 Eureka가 하는 역할인 Service Discovery가 어떤 것인지도 같이 알아보자. Service Discovery다른 서비스를 호출할 때는 다른 서비스 인스턴스가 있는 곳의 네트워크 정보를 알아야 한다. 그 정보는 아이피 주소와 포트 번호.하지만 클라우드의 경우에 인스턴스는 동적으로 할당되기 때문에 아이피 주소와 포트번호가 바..
Hosae905
'분류 전체보기' 카테고리의 글 목록 (3 Page)