본문 바로가기

Computer Science/컴퓨터공학(김용담 강사님)16

프로세스 관리: 생성, 제거, 스케줄링 (feat. PCB) 프로세스 관리(Process management) 실제로 프로세스는 메모리 상에서 어떻게 만들어지고, 어떻게 조절이 되는지 등에 대한 내용을 배울 수 있다. 해당 글의 이해를 돕기 위해 이 글을 먼저 보고 오시는 걸 추천드립니다: 프로세스 상태 전이도 목차 1. PCB(Pcrosess Control Block)란? 2. 프로세스 생성: 프로세스가 어떻게 만들어질까? 3. 프로세스 제거(termination) 4. 프로세스 스케줄링(Proces Scheduling) 1. PCB(Pcrosess Control Block)란? PCB(Process Control Block)는 운영 체제가 프로세스를 관리하기 위해 사용하는 자료구조이다. 각 프로세스마다 하나의 PCB가 할당되며, 해당 프로세스의 상태와 제어 정.. 2023. 4. 26.
프로세스 상태 전이도(feat. 프로세스 vs 프로그램 용어 차이) 1. 프로세스 vs 프로그램 무슨 차이일까? 프로그램(Program): 저장공간에 저장되어 있는 명령어 목록 파일 프로세스(Process): 메모리에서 실행되고 있는 프로그램 .프로세스는 OS에서 가장 중요한 기본적인 개념이다. 프로그램이라는 말이있고, 프로세스가 있는데 컴퓨터에서 이 2가지는 이제부터 다른 개념이라고 생각해야한다. 프로그램은 한 마디로 말하면, 명령어 목록이 있는 파일이다. 즉, 프로그램은 SSD/HDD같은 Storage에 저장되어있는 명령어 집합을 이야기한다. 카카오톡 프로그램이라고 하면, 내 컴퓨터 어딘가에 카카오톡을 실행할 수 있는 여러가지가 깔려있다. 윈도우는 C드라이브 안에 Program files라는 폴더 안에 들어가 있다. 그 폴더 이름이 Program files인 이유이다.. 2023. 4. 24.
운영체제 종류: 유닉스, 윈도우, 맥OS, 리눅스 운영체제의 종류 1. 유닉스(Unix) 2. 윈도우(Windows) 3. MacOS 4. 리눅스(Linux) 1. 운영체제의 근본: 유닉스(Unix) 운영체제라는 개념은 컴퓨터가 처음 시작될 때, 원래 없었다가 점점 고도화 되면서 시스템 리소스를 관리하는 시스템 소프트웨어 필요성으로 인해 만들어졌다. 1969년도에 처음 만들어지고, 그 이후에 여러가지 운영체제가 나왔다. 1972년도에 C언어가 만들어졌다. 그 당시에 전세계에서 가장 유명한, 컴공의 관련 모든 기초 학문의 개념이 다 등장한 벨렙(벨 연구소)라는 곳에서 정말 유명한 컴퓨터 과학자들이 만든 것이 C언어이다. C언어는 운영체제를 만들기 위해 만들어진 언어이다. 윈도우를 제외한 모든 운영체제를 포괄하는 것이 유닉스이다. 유닉스 계열에 있는 것이 .. 2023. 4. 22.
운영체제: 유저모드, 커널모드, 시스템콜 운영체제: 유저모드, 커널모드, 시스템콜 운영체제를 통해 안정적이고, 효율적인 동작을 하기 위해서는 사용자 또는 응용프로그램이 직접 하드웨어에 접근하는 것을 막아야한다. 운영체제 내부에서는 컴퓨터가 CPU를 어떻게 사용하느냐에 따라 2가지 방식으로 컴퓨터를 제어한다. 하나는 CPU의 명령어를 마음대로 설정할 수 없게끔 만들어 놓은 모드가 있다. 이걸 유저 모드라고 한다. CPU를 직접 컨트롤 할 수 있는 커널 모드이다. 유저모드(User Mode): 사용자와 데이터를 왔다갔다할 수 있는 등의 작업을 한다. 은행원이 데스크에서 고객과 상담하는 것과 비슷하다. 커널모드(Kernel Mode): 운영체제 내부에서 실제로 하드웨어를 제어할 수 있다. 은행원이 뒤에서 작업을 하는 것과 비슷하다. 이렇게 두가지 모.. 2023. 4. 22.
운영체제(OS)란? 개념과 구조(커널, 시스템콜 등) 운영체제(Operating Systems, OS)란? 운영체제(OS)란 유저가 컴퓨터를 편하게 사용할 수 있게 모든 하드웨어 자원을 관리해주는 프로그램이다. 모든 하드웨어 자원을 관리? 그게 무슨 말일까? 하드웨어 자원에는 CPU, 메모리, I/O 디바이스 등이 있다. 묶어서 컴퓨터 자원(resource)이라고 한다. (하드웨어 관련 부가적이 설명이 더 필요하다면, 이글을 보면 된다.) 유저들은 구글이나 카카오톡같은 프로그램을 사용하거나, 키보를 입력하는 등의 작업을 할 때, 동작원리가 어떻게 되는지 알지 못해도, 프로그램이 알아서 연동되는 것처럼 이러한 것들을 OS가 다 관리를 해주는 것이다. 아이폰도 iOS가 있고, 아이패드OS, 맥OS, 윈도우, 리눅스 등 이러한 것들이 전부 운영체제라는 큰 틀안에.. 2023. 4. 18.
CPU란? 구조와 역할, 구성요소, 성능향상 방법 1. CPU란? CPU 구조와 역할 CPU란 Central Processing Unit의 약자로 중앙 처리 장치를 의미한다. 프로그램의 명령어를 해석하고 실행하는 역할을 하는 컴퓨터 시스템의 중심이 되는 핵심 요소이다. CPU는 어떻게 생겼을까? 컴퓨터 본체를 분리시켜보면, 메인보드라는 흔한 초록색 기판(색깔은 종류에 따라 다름)이 나온다. 그 기판에 네모난 모양의 부품이 CPU다. 컴퓨터 부품은 보통 크게 5가지로 나뉜다. CPU, 주기억장치(RAM), 보조기억장치(HDD/SSD), I/O디바이스(모니터, 마우스 등), 메인보드 이렇게 5가지이다. HDD/SSD에는 우리가 흔히사용하는 엑셀, 포토샵 등의 프로그램들이 저장되어있다. 비휘발성이고, 용량이 크다.(256GB 등) 프로그램을 실행시키면, 로딩.. 2023. 4. 14.
정수(signed, unsigned)와 부동 소수점 표현 in 컴퓨터 1. 정수의 부호 표현: signed, unsigned signed integers(정수): 양수, 음수, 0을 모두 표현할 수 있다. 첫 번째 비트는 부호 비트로, 0은 양수를, 1은 음수를 의미한다. unsigned integer(자연수 & 0): 양수와 0만 표현할 수 있다. 따라서, 모든 비트를 숫자의 표현에 사용한다. 정수가 signed인지 unsigned인지에 따라서 표현 가능한 숫자 범위가 다르기 때문에 주의해야 한다. 예시들어, 1바이트(=8비트)를 10진수의 unsinged로 표현하면, 0부터 255까지의 값를 표현할 수 있다. singed같은 경우에는 -128부터 +127까지의 값을 표현할 수 있다. 이걸 2진수로 표현하면 아래와 같다. signed integer 11111111: -1.. 2023. 4. 12.
컴퓨터 아키텍처란: 폰노이만 구조, 명령주기 목차 1. 컴퓨터 아키텍처(Computer Architecture)란? 2. 컴퓨터 시스템의 구성 요소(Components of a computer system) 3. 폰노이만 아키텍처(Von Neumann Architecture) 4. 명령주기(Instruction Cycle) 1. 컴퓨터 아키텍처(Computer Architecture)란? 아키텍처라는 말은 건축에서 유래됐으며, 뜻을 단순하게 풀이하면, 구조, 설계와 같은 의미를 가집니다. 즉, 컴퓨터 아키텍처란 컴퓨터를 구성하는 하드웨어와 소프트웨어를 포함한 컴퓨터 시스템 전체의 구조와 설계 모형을 의미합니다. 이는 하드웨어와 컴프트웨어의 상호작용에 대한 설계와 구현도 포함합니다. 컴퓨터 아키텍처는 시스템의 성능, 신뢰성, 에너지 효율성 등을 결정.. 2023. 4. 9.
그래프 자료구조& 알고리즘(BFS, DFS) 목차 1. 그래프 자료구조 1-1. 그래프 용어 1-2. 그래프 유형 1-3. 그래프 표현 1-3-1. 인접 행렬(Adjacency matrix) 방식 1-3-2. 인접 리스트(Adjacency list) 방식 2. 그래프 알고리즘 개요 2-1. BFS 2-2. DFS 컴퓨터공학에서의 자료구조를 배울 때 목표는 스택, 큐, 트리, 그래프 총 4개의 자료구조를 충분히 이해하는 것입니다. 지금까지 이글을 마지막으로, 총 4개의 파트에 걸쳐서 자료구조를 설명드렸습니다. 이번 글에서는 자료구조 파트 마지막으로 그래프 자료구조를 소개하겠습니다. 1) 자료구조 개념 및 고려사항(시간복잡도, 공간복잡도) 2) 어레이, 링크드리스트, 스택, 큐 자료구조 3) 알고리즘: 정렬 알고리즘, 탐색 알고리즘 4) 트리 자료구조.. 2023. 4. 8.
트리 자료구조: 이진, 이진탐색, Balanced Tree 목차 트리 자료구조 1. 이진 트리(Binary Tree) 2. 이진 탐색 트리(Binary Search Tree) 2-1. 이진 탐색트리의 Basic operations 3. Balanced Tree 오늘 소개할 트리 자료구조를 이해하기 위해서는 탐색 알고리즘(Search Algorithm)에 대한 이해가 있어야하기 때문에 아래 글을 먼저 보고 오시는 걸 추천드립니다. 그럼 트리 자료구조와 그래프 자료구조를 알아보겠습니다. 정렬 알고리즘(버블, 퀵)과 탐색 알고리즘(선형, 이진) 목차 알고리즘(Algorithm)이란? 1. 정렬 알고리즘(Sorting algorithms) 1-1. 버블 정렬(Bubble sorting) 1-2. 퀵 정렬(Quick Sort) 2. 탐색 알고리즘(Searching alg.. 2023. 4. 8.
정렬 알고리즘(버블, 퀵)과 탐색 알고리즘(선형, 이진) 목차 알고리즘(Algorithm)이란? 1. 정렬 알고리즘(Sorting algorithms) 1-1. 버블 정렬(Bubble sorting) 1-2. 퀵 정렬(Quick Sort) 2. 탐색 알고리즘(Searching algorithms) 2-1. 선형 검색(Linear Search) 2-2. 이진 탐색(Binary Search) 알고리즘(Algorithm)이란? 컴퓨터공학에서의 알고리즘이란 어떠한 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것입니다. 일반적으로 알고 있는 유튜브 알고리즘이랑은 조금 다른 개념입니다. 알고리즘은 입력, 출력, 명확성, 유한성, 효율성의 조건을 만족해야하고, 자연어, 의사코드(pseudo code: 정확하진 않은데 의도만 설명하는 코드), 순.. 2023. 4. 8.
자료구조: 배열, 연결리스트, 스택, 큐 자료구조란, 데이터를 효율적으로 저장하고, 관리하며, 사용하기 위한 구조입니다. 그 중에서도 가장 기본이 되는 자료구조는 배열, 연결리스트, 스택, 큐, 트리, 그래프이죠. 어떤 자료구조를 쓰느냐에 따라 프로그램의 성능이 크게 달라질 수 있습니다. (앞선 파트에서 자세하게 설명한 바 있습니다.) 자료구조란? (feat. 시간복잡도, 공간복잡도) 목차 1. 자료구조(Data Sturcture)란? 1-1. 자료구조의 종류 2. 시간복잡도와 공간복잡도 2-1. 시간복잡도(Time complexity) 2-2. 공간복잡도(Space complexity) 2-2-1. 빅오표기법(Big Oh) 1. 자료구조 (Data Structure)란? coduking.tistory.com 이 자료구조들은 프로그래밍에서 가장.. 2023. 4. 6.