목록Computer Science (28)
Kim Jinung
프로세스란 무엇인가? 프로세스는 스토리지에 저장한 프로그램을 메인 메모리에 적재하여 실행 중인 상태다. 현대 컴퓨팅 시스템에서 작업의 단위다. 초기 컴퓨터 시스템은 하나의 프로그램이 시스템을 완전히 제어하므로, 시스템의 모든 자원에 접근할 수 있었다. 운영체제가 등장한 이후 현대 컴퓨팅 시스템은 메모리에 다수의 프로그램을 적재해서 병행 실행할 수 있게 되었다. 이러한 과정을 거치며 운영체제는 여러개의 프로세스를 효율적으로 실행하기 위한 기능을 제공하게 된다. 따라서 포인트는 1. 프로세스는 메모리 상에서 어떻게 구성되어 있는가? 2. 여러개의 프로세스를 어떻게 컨트롤하고 우선순위를 부여하는가? 우선 프로세스는 메모리 상에서 다음과 같이 구성된다. 프로세스의 메모리 배치 텍스트 섹션 - 소스 코드 데이터 ..

운영체제는 프로그램이 실행되는 환경을 제공한다. 그리고 이를 위해 인터페이스를 제공한다. 그렇다면 인터페이스는 무엇을 위해 존재할까? 운영체제는 프로그램에 하드웨어 리소스를 할당하는 역할을 담당할 뿐만 아니라 파일 조작, 오류 탐지, 입출력 연산 등의 서비스도 제공한다. 대부분의 프로그램에서 공통적으로 필요한 기능을 운영체제가 제공하는 것이다. 그리고 이러한 서비스를 제공하기 위해서 인터페이스를 제공한다. 기계를 조작하는 리모콘, 운영체제의 그래픽 인터페이스와 커맨드라인 인터페이스 등을 떠올릴 수 있다. 유저는 명령어만 알고있다면 하드웨어를 다루어야 하는 저수준 작업의 내부 코드 및 동작원리를 몰라도 기능을 사용할 수 있다. 이것이 시스템 콜이다. 즉 리모콘이 내부에서 어떠한 일을 하는지는 몰라도 유저가..
운영체제는 컴퓨터 하드웨어를 관리하는 소프트웨어다. 그렇다면 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로 저..

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..
Heap (data structure) - Wikipedia From Wikipedia, the free encyclopedia Jump to navigation Jump to search Computer science data structure For the memory heap (in low-level computer programming), which bears no relation to the data structure, see C dynamic memory allocation. Example of a bi en.wikipedia.org Heap은 tree 기반의 자료구조로, max heap과 min heap이 있다. max heap은 root node가 항상 최댓값이며 반대로 min heap은 ..

Reference - Flyway docs Goal 1. flyway가 무엇인지 파악한다. 2. "가 왜 등장했는지 파악한다. 3. "를 어떻게 사용하는지 파악한다. 선행 조건 - Docker Flyway 공식 문서에서 flyway를 데이터베이스 마이그레이션 툴로 소개하고 있다. 그렇다면 데이터베이스 마이그레이션은 왜 필요할까? 오늘날 소프트웨어 개발에서 우리는 위와 같은 개발 프로세스를 흔하게 접할 수 있다. Axel과 Christian이 별도로 기능을 개발하고 하나로 합친다. 그리고 지속적으로 통합(Continuous Integration)한다. 해당 버전은 다시 Test를 거치면서 수정되고 최종적으로 Production 스테이지에서 서비스 한다. 그리고 어떠한 기능에 대한 니즈가 생기는 경우가 발생..