CS 116

[운영체제] 1-3. 타임 쉐어링

Time Sharing 이전 글에서 설명했던 상황을 다시 떠올려봅시다. multi-programming 방법에서도 분명한 단점이 있습니다. 만약 우리가 A 고객과 B 고객이 있다고 해봅시다. B 고객은 2초면 끝나는 작업이고, A 고객은 2분이 걸린다고 한다면, B를 먼저 처리하고, A를 처리해야 B를 조금 더 빨리 끝내줄 수 있겠죠. 간단하게 설명하면 이러한 방식이 Time Sharing입니다. 정확히는 time quantum(하나의 프로세스에게 할당되는 최대 허용 시간)을 정해둡니다. 이러한 time quantum 내에 프로세스가 끝나지 않게 되면 다른 프로세스를 처리하는 swap을 합니다. 이렇게 함으로써 mean response time(하나의 프로세스가 CPU에게 처리되는데 걸리는 시간)을 줄일..

CS/OS 2023.09.10

[운영체제] 1-2. 멀티 프로그래밍

Simple Batch System 일련의 프로그램을 순서대로 진행하는 시스템 Uni programming 하나의 프로그램에 대해서 모두 처리한 후에, 다른 프로그램을 실행하는 과정을 의미합니다. 지금부터 많은 예를 들 때, 은행 창구를 예로 들어보겠습니다. uni programming은 직원 한명에 의자가 딱 하나 있는 것입니다. 여기에서 직원은 CPU를 의미하고, 의자는 메인 메모리라고 생각해봅시다. 이렇게 되면 고객 한 명밖에 처리하지 못하는데, 고객이 어떤 서류를 작성해야한다면 그러한 순간에 직원은 고객이 모든 서류 작성을 마칠 때까지 기다리게됩니다. 이러한 순간은 굉장한 낭비가 됩니다. CPU가 일을 처리하는 시간보다 입출력을 기다리는 시간이 더 많은 비율을 차지하게 되기 때문이죠.(보통 입출력..

CS/OS 2023.09.10

[운영체제] 1-1. 운영체제 개요

운영체제의 개요에 대해서 설명하겠습니다. 운영체제 운영체제는 컴퓨터 응용 프로그램이 실행되는 과정에서 하드웨어를 제어하고, 응용 프로그램 실행 결과를 보일 수 있도록 컴퓨터 내부 동작을 관리하는 소프트웨어를 말합니다. 우측 그림을 보면, OS는 사용자가 사용하는 프로그램들과 하드웨어 사이의 중간다리 역할을 합니다. 운영체제의 역할 1. 컴퓨터를 부팅한다. - 부팅 : 컴퓨터를 킨 이후에 사용할 수 있도록 준비하는 과정. 보조기억장치에 있는 운영체제를 메인 메모리에 옮기는 등과 같은 것을 의미 2. Process Management등으로 여러 응용프로그램을 실행한다. 3. 여러 개의 프로그램을 제어한다. 4. 입출력을 받거나, 파일을 관리(read, write)를 한다. 5. 컴퓨터를 사용한 후, 안전하게..

CS/OS 2023.09.10

[UTM] 로컬과 가상머신 파일 및 폴더 공유하기

운영체제에서 Virtual Box 툴을 사용하고, 나는 arm 환경이라 다른 툴을 사용해야했다.. 물론 쓸 수는 있지만 베타버전이기도 하고 실제로 해보니까 먹통인 부분이 많아서 arm 전용 툴인 UMT를 사용했다. 실제, 실습에서는 Virtual Box를 하다보니까 거기서 설정하는 것들을 UTM에 맞게 바꿔야하는데 잘 몰랐다.. 그 중에서, 내 로컬 환경에서 가상머신으로 파일을 전송하는 법을 알아보려고 한다. 우선 기본 전제는 UTM의 가상머신에 우분투가 설치되어 있어야한다. 참고로 아래에 사용하는 모든 명령어는 로컬에서 실행한다.(당연하겠지만..) 우선 로컬에서 가상머신으로 보내는 방법이다. $ scp [로컬 파일 경로] [원격 username]@[원격 ip]:~[원격에 저장할 경로] 이렇게 되면, 로..

CS/OS 2023.09.07

포트번호? 8080:8080 그게 뭐지??

도커 컴포즈 파일이나 도커를 작성할 때, 또는 흔히들 포트번호를 입력하여 통신을 한다. 나는 이걸 그냥 감으로만 캐치하여 사용하고 있었고, 본질적으로 포트번호 충돌이 일어나도, 대충 숫자만 바꾸는 식으로 진행했다. 그런데, 이번에 docker compose를 작성하면서, 포트번호에 대한 의문점이 생겼고 어떻게 사용하는지에 대해서 멘토(?)에게 자문해봤다. 그리고 이 글은, 그렇게 간단하게나마 포트번호에 대한 개념을 최소한의 데이터 통신의 지식으로 이해할 수 있도록 쓰였다. 우선 우리는 많은 서비스에서 API로 요청을 하거나, DB를 설정할 때, 프론트와 백의 소통에서 포트번호를 일치해줘야한다는 것을 알고 있다. 막상 쓸 때는 '숫자만 대충 맞으면 되지'라는 식으로 진행했지만, 직접 작성하려고 하니, 무슨..

CS/Network 2023.08.30

백트래킹이란? - 백트래킹으로 조합 구현하기 [Java/자바]

백트래킹이란? 백트래킹이란 해를 찾는 도중에 주어진 조건에 부합하지 않는 상태일 때, 즉시 이전 상태로 되돌아가 다른 경우의 수를 탐색하는 방법을 말합니다. 보통 이 알고리즘은 DFS나 BFS에서 사용됩니다. 모든 노드를 방문하는 알고리즘 중 하나인 DFS와 BFS에서 조건을 만족하지 않는 노드를 방문했을 때, 해당 노드로부터 연결된 모든 자식 노드들을 방문하지 않고 건너뛰는 방식입니다. 이를 가지치기(Pruning)이라고도 합니다. 저는 이 백트래킹을 조합의 경우의 수를 구하는 과정에서 처음 접했습니다. 따라서 m과 n이 주어졌을 때, 가능한 모든 경우의 수를 출력하는 코드를 소개하면서 백트래킹에 대해 코드와 함께 다뤄보겠습니다. 아래의 코드는 1부터 m까지의 정수가 있다고 했을 때, mCn의 모든 경..

CS/Algorithm 2023.07.18