목록분류 전체보기 (75)
Kim Jinung
프로세스 동기화? 운영체제는 프로세스를 병행, 병렬로 실행하는 방향으로 발전했다. CPU 사용률을 최대화하기 위함이다. 하지만 이로 인해서 프로세스 간에 공유하고 있는 데이터의 조작 결과가 실행 순서에 의존하게 되는 문제가 발생한다. 이것이 경쟁 조건(Race condtion)이다. 다음으로 임계 구역(Critical section)은 공유 데이터가 조작될 수 있는, 즉 경쟁 조건이 발생할 수 있는 코드 영역이다. 그리고 이러한 임계 구역에서 발생하는 경쟁 조건 문제를 임계구역 문제(Critical section problem)으로 부른다. 프로세스 동기화를 위한 하드웨어 지원 Memory Barries: 프로세서가 메모리 변경 결과를 다른 프로세서에 알린다. 하드웨어 명령어 *하드웨어 레벨에서의 제어는..
CPU 스케줄링이 무엇인가? 운영체제는 프로세스 간 CPU 교환을 통해 그 사용률을 극대화한다. 앞서 다룬 병행성을 갖게 해준 멀티 프로그래밍을 떠올리면 된다. 다시 말해 운영체제의 CPU 스케줄링은 준비 큐에서 대기 프로세스를 선택하고 CPU를 할당하는 작업이다. 스케줄링 방법에 따라 프로세스를 처리하는 성능이 좌지우지 되므로 CPU 스케줄링은 운영체제 설계의 핵심이다. 선점 및 비선점 스케줄링 선점 스케줄링: CPU를 프로세스로부터 가져올 수 있는 케이스 비선점 스케줄링: 프로세스가 자발적으로 CPU를 반납하는 케이스 대부분 현대 운영체제에서는 선점 스케줄링을 사용한다. 비선점 스케줄링은 실시간 스케줄링에 적합하지 않다. CPU 제어 권한을 프로세스가 포기하기 전까지 소유하므로 균형있게 CPU소유 시..
스레드란 무엇인가? 프로세스와 스레드? 운영체제가 제공하는 프로세스 모델에서 프로세스는 스레드라는 단위로 작업을 수행한다. (이것은 CPU의 작업 단위이기도 하다.) 초기 컴퓨터 시스템은 싱글 스레드 프로세스만 존재했다. (스레드가 멀티로 구성된다고 해도 결국 병행 실행이라 의미가 없었다.) 폰 노이만 아키텍처에서 프로그램은 메모리에 적재되고 이를 CPU가 연산한다. 그러므로 싱글 코어 CPU 칩에서는 한 번에 하나의 스레드밖에 실행할 수 없다.(하나의 프로세스가 모든 CPU 리소스를 점유하게 되므로) 운영체제에서는 이를 극복하기 위해서 여러 프로세스를 번갈아가며 작업하는 멀티 프로그래밍 기법이 등장했다. 이것이 병행성이다(Parallel). 시간이 흘러 멀티 코어 CPU가 등장했다. 이는 CPU 연산이..
https://learn.microsoft.com/en-us/azure/architecture/patterns/backends-for-frontends Backends for Frontends pattern - Azure Architecture Center Explore the Backends for Frontends pattern, which creates separate backend services to be consumed by specific frontend applications or interfaces. learn.microsoft.com 모바일 시장이 성장했다. 서비스는 같지만 구체적으로, 모바일에 제공해야하는 데이터와 PC에 제공해야하는 데이터의 종류가 다른 경우 (모바일은 정수로 데이터..
프로세스란 무엇인가? 프로세스는 스토리지에 저장한 프로그램을 메인 메모리에 적재하여 실행 중인 상태다. 현대 컴퓨팅 시스템에서 작업의 단위다. 초기 컴퓨터 시스템은 하나의 프로그램이 시스템을 완전히 제어하므로, 시스템의 모든 자원에 접근할 수 있었다. 운영체제가 등장한 이후 현대 컴퓨팅 시스템은 메모리에 다수의 프로그램을 적재해서 병행 실행할 수 있게 되었다. 이러한 과정을 거치며 운영체제는 여러개의 프로세스를 효율적으로 실행하기 위한 기능을 제공하게 된다. 따라서 포인트는 1. 프로세스는 메모리 상에서 어떻게 구성되어 있는가? 2. 여러개의 프로세스를 어떻게 컨트롤하고 우선순위를 부여하는가? 우선 프로세스는 메모리 상에서 다음과 같이 구성된다. 프로세스의 메모리 배치 텍스트 섹션 - 소스 코드 데이터 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cvovXU/btrURTFXibw/8nkvwqJmk353lCUKDy9OzK/img.jpg)
운영체제는 프로그램이 실행되는 환경을 제공한다. 그리고 이를 위해 인터페이스를 제공한다. 그렇다면 인터페이스는 무엇을 위해 존재할까? 운영체제는 프로그램에 하드웨어 리소스를 할당하는 역할을 담당할 뿐만 아니라 파일 조작, 오류 탐지, 입출력 연산 등의 서비스도 제공한다. 대부분의 프로그램에서 공통적으로 필요한 기능을 운영체제가 제공하는 것이다. 그리고 이러한 서비스를 제공하기 위해서 인터페이스를 제공한다. 기계를 조작하는 리모콘, 운영체제의 그래픽 인터페이스와 커맨드라인 인터페이스 등을 떠올릴 수 있다. 유저는 명령어만 알고있다면 하드웨어를 다루어야 하는 저수준 작업의 내부 코드 및 동작원리를 몰라도 기능을 사용할 수 있다. 이것이 시스템 콜이다. 즉 리모콘이 내부에서 어떠한 일을 하는지는 몰라도 유저가..
운영체제는 컴퓨터 하드웨어를 관리하는 소프트웨어다. 그렇다면 OS가 필요한 이유가 무엇일까? 하드웨어 리소스를 효율적으로 분배해줄 무언가가 필요하다. 특정 프로그램이 하드웨어까지 컨트롤 한다면 운영체제가 필요하지 않다. 하지만 해당 프로그램 하나만 하드웨어를 점유하게 된다. 다시 또 다른 프로그램도 하드웨어를 컨트롤하는 작업까지 담당해야한다. 그렇다면 하드웨어 리소스를 분배해주는 소프트웨어가 존재한다면 애플리케이션 단에서는 복잡성과 반복 작업을 제거할 수 있지 않을까? 초기 컴퓨터는 하나의 프로그램이 하드웨어를 점유해서 다른 프로그램이 동작할 수 없었다. 이후 시분할 시스템이 등장하는 등, 어떻게 하면 하드웨어를 더 효율적으로 사용할 수 있을까 고민하고 발전해온 흔적들을 살펴볼 수 있다. 그리고 이 과정..
Trie - Wikipedia From Wikipedia, the free encyclopedia Jump to navigation Jump to search K-ary search tree data structure This article is about a tree data structure. For the French commune, see Trie-sur-Baïse. TrieTypetreeInvented1960Invented byEdward Fredkin, Axel Thue, en.wikipedia.org 탐색 트리의 일종으로 노드의 자체의 정보를 저장하는 것이 아니라 포지션과 관련된 정보를 저장한다. 일반적으로 문자열 색인을 구축하는 형태로, 각 인덱스에 해당하는 character를 Key로 저..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cZ04jc/btrToC6F6bQ/woxLJuLdz3bKRz60qJWS71/img.jpg)
Self-balancing binary search tree - Wikipedia From Wikipedia, the free encyclopedia Jump to navigation Jump to search Any node-based binary search tree that automatically keeps its height the same An example of an unbalanced tree; following the path from the root to a node takes an average of 3.27 nod en.wikipedia.org Self-balancing BST는 트리의 높이를 가능한 작게 유지하여 트리의 성능을 보장한다. BST의 문제점 BST는 최악의 경우에서 O..
Abstract data type - Wikipedia From Wikipedia, the free encyclopedia Jump to navigation Jump to search Mathematical model for data types In computer science, an abstract data type (ADT) is a mathematical model for data types. An abstract data type is defined by its behavior (semantics) en.wikipedia.org What is the difference between an Abstract Data Type(ADT) and a Data Structure? I have found b..