CS 19

[OS] 프로세스 관리 (Process Management)

안녕하세요. 개발하는 정주입니다. 오늘은 "프로세스 관리 (Process Management)"을 정리했습니다. 프로세스 생성 프로세스는 수행 중 다른 프로세스를 생성할 수 있습니다. 이때 생성하는 프로세스를 부모(parent) 프로세스, 생성된 프로세스를 자식(child) 프로세스라고 합니다. 프로세스가 생성되면 고유한 ID 값인 PID(Process Identifier)를 부여합니다. 프로세스의 부모-자식 관계는 트리의 형태로 나타낼 수 있습니다. 부모 프로세스는 운영체제(시스템 콜)를 통해 자식 프로세스를 생성할 수 있습니다. 자식 프로세스는 부모 프로세스를 복제하는데요. 여기서 복제는 부모 프로세스의 binary와 OS 데이터를 포함한 모든 Context를 그대로 복사한다는 의미입니다. 이때, C..

CS/운영체제(OS) 2022.05.24

[OS] Thread

안녕하세요. 개발하는 정주입니다. 오늘은 "쓰레드 (Thread)"을 정리했습니다. 이번 포스팅도 추후에 슬그머니 내용이 추가될 수 있습니다. Thread란? Thread란 프로세스 내에서 실행되는 흐름의 단위입니다. 프로세스가 하나의 강이라면 Thread는 그 강의 물길이라고 말할 수 있습니다. 하나의 강에는 여러 개의 물길이 존재하는 것처럼 하나의 프로세스에는 여러 개의 Thread가 존재합니다. (single thread process에는 1개의 thread만 존재) 프로세스의 일부 자원(code, data, heap)을 공유하고 Program Counter, Register set, Stack은 별도로 가집니다. Thread는 프로세스 내에서 독립적인 작업을 수행해야 하므로 각자의 Stack과 P..

CS/운영체제(OS) 2022.05.21

[OS] 프로세스 (Process)

안녕하세요. 개발하는 정주입니다. 오늘은 "프로세스 (Process)"을 정리했습니다. 쌓아두기만 하고 포스팅을 안 하고 있었는데 이제야 하게 되었네요 ㅠㅠ.. 내용이 슬그머니 추가될 수 있습니다. 프로세스 (Process)란? 프로세스란 실행 중인 프로그램입니다. 프로그램과 프로세스는 아예 다른 것입니다. 프로그램은 보조 기억 장치에 실행되기를 기다리는 명령어와 데이터의 묶음으로 프로그램이 CPU에서 다룰 수 있도록 메모리에 적재되면 이를 프로세스라고 부릅니다. 즉, 프로세스란 보조 기억 장치의 프로그램이 메모리에 적재된 상태를 의미합니다. Process Context 프로세스의 개념을 이해할 때는 프로세스의 문맥(Context)이 중요합니다. 프로세스 Context란 특정 시점에서 프로세스가 어디까지..

CS/운영체제(OS) 2022.05.21

[자료구조] Linked List(링크드 리스트) with Swift

안녕하세요. 개발하는 정주입니다. 오늘은 "Linked List(링크드 리스트)"을 정리하였습니다. 최근에 코딩 테스트를 준비하기 위해 알고리즘 포스팅만 잔뜩 적었는데요. 오랜만에 자료구조를 포스팅 하려니 설렙니다. Singly linked list(링크드 리스트)란? 링크드 리스트(연결 리스트)는 노드가 연결되어 있는 자료구조입니다. 각 노드는 다음 노드를 가리키는 포인터와 노드의 데이터를 가지고 있습니다. 이 포스팅에서 수식어가 없는 링크드 리스트는 단방향 링크드 리스트를 의미합니다. 데이터가 연속적으로 연결되어 있는 자료구조이기 때문에 배열과 많이 비교가 되는데요. 저도 짧게 다뤄보며 이전에 작성한 큐를 링크드 리스트로 구현했을 때의 장단점도 살펴보겠습니다. 배열과 링크드 리스트의 차이 배열 앞서 ..

CS/자료구조 2022.05.10

[자료구조] Queue(큐) with Swift

안녕하세요. 개발하는 정주입니다. 오늘은 "Queue"를 정리하였습니다. 포스팅 하단에 Swift로 Queue를 구현하고 dequeue의 시간복잡도 개선, 테스트도 함께 진행했습니다. Queue란? Queue는 Stack과 함께 기본적인 자료 구조 중 한가지입니다. 먼저 집어 넣은 데이터가 먼저 나오는 FIFO(First In First Out) 구조로 일렬로 이루어진 줄을 생각하면 연상이 쉽습니다. 먼저 줄을 선 사람이 먼저 나갈 수 있는 것처럼 Queue도 먼저 넣은 데이터가 먼저 나오는 것입니다. Queue의 동작 Queue는 크게 3가지 동작을 합니다. Enqueue : Queue의 맨 뒤에 원소를 추가합니다. Dequeue : Queue의 맨 앞 원소를 삭제합니다. Peek : 맨 앞에 위치한 ..

CS/자료구조 2022.04.09

[자료구조] Array(배열) with Swift

안녕하세요. 개발하는 정주입니다. 오늘은 "Array(배열)"을 정리하였습니다. 배열이란? 배열은 대부분의 프로그래밍 언어에 포함된 선형 자료 구조인데요. 동일한 데이터 타입(연관된 데이터)을 하나의 변수에 순서대로 나열한 뒤 메모리에 연속으로 저장해 만든 자료 구조입니다. 데이터를 순서대로 나열한다는 점과 메모리에 연속으로 저장이 된다는 점이 배열의 포인트입니다. 배열은 동일한 데이터 타입을 저장하기 때문에 다른 데이터 타입을 담을 수는 없습니다. Int Array에 Double이나 String을 넣지 못하는 것이 예시입니다. 그런데 Swift에서는 Any 타입을 이용해 여러 타입을 하나의 배열에 담을 수도 있죠? 저도 배열을 조사하며 이것에 대해 궁금해져서 찾아본 결과! Any 타입의 배열은 Any ..

CS/자료구조 2022.04.08

[자료구조] Stack(스택) with Swift

안녕하세요. 개발하는 정주입니다. 오늘은 Stack(스택)을 정리했습니다. Stack이란? Stack이란 "어떤 것을 쌓는다"는 것을 표현하기 위해 만든 선형 자료 구조로 배열과 같지만 특정 기능에 특화된 배열입니다. 원소를 쌓는 것에 중점을 둔 배열인 셈이죠. 따라서 Stack을 활용하는 곳은 무언가를 쌓고 맨 위의 것을 빼는 구조라는 것을 추상적으로 알 수 있게 됩니다. 자료구조는 기능 구현도 중요하지만 이러한 개념을 파악하는 것도 중요한 점이라고 생각하네요. Stack 특성 Stack의 가장 중요한 특성은 "LIFO"입니다. (리포가 아닌 라이포라고 읽습니다) LIFO란 Last In First Out의 줄임말로 마지막에 들어온 원소가 가장 먼저 나간다는 의미입니다. 택배를 쌓으면 맨 위에 있는 택..

CS/자료구조 2022.04.08

[OS] 컴퓨터 시스템 구조

안녕하세요. 개발하는 정주입니다. 오늘은 "컴퓨터 시스템 구조"를 정리했습니다. 이번 포스팅까지는 개요로 내용이 깊지 않습니다. 참고 부탁드립니다. 컴퓨터 시스템 구조 CPU CPU는 메모리에서 기계어를 읽어서 처리합니다. 연산을 수행하는 산술 논리 장치(ALU), 제어 명령을 전달하는 컨트롤 장치(CU), 결과 값을 일시적으로 저장하는 Registers가 포함됩니다. Memory 주기억장치이며 CPU의 작업 공간입니다. 운영체제와 프로세스 등이 메모리 공간에 올라갑니다. CPU는 주기억장치에서 프로그램들의 기계어(명령어) 등을 읽어서 처리합니다. Mode Bit 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호장치입니다. Mode Bit을 통해 하드웨어적..

CS/운영체제(OS) 2022.03.19

[OS] 운영체제 개요

안녕하세요. 개발하는 정주입니다. 오늘은 운영체제 개요를 정리했습니다. 잘못된 점이 있다면 댓글로 알려주시면 감사하겠습니다. 운영체제란? 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층입니다. 사용자가 하드웨어적인 지식이 없어도 각종 애플리케이션 프로그램 등을 편하게 사용할 수 있도록 하는 것이 운영체제의 목적입니다. 컴퓨터 분야에서 가장 복잡하고 까다로운 소프트웨어로 볼 수 있습니다. 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공 운영체제는 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상(illusion)을 제공합니다. 하드웨어를 직접 다루는 복잡한 부분을 사용자 대신 운영체제가 대행합니다. 컴퓨터 시스템의 자원을 효율적으..

CS/운영체제(OS) 2022.03.09
반응형