본문 바로가기

전체 글100

5. 운영체제의 역할 운영체제에 필요한 컴퓨터 시스템은 어떻게 구성되어 있을까? 운영체제의 역할에 대해 이해하려면 먼저 컴퓨터 시스템의 구조를 알아야한다. 우리는 1. 운영체제란? 에서 컴퓨터 시스템의 기본적인 구조를 확인했었다. 크게 응용 SW OS HW의 계층을 갖고 있는데 여기서 OS가 사용자(응용 SW)와 HW 간에 중계 역할(인터페이스)을 수행하고 있기 때문이다. 그래서 OS는 자원에 대해 배타적 독점을 하고 있고 사용자나 SW는 OS를 통해서만 HW에 접근할 수 있다는 특징이 있다. 사실 이 내용은 OS의 선수과목으로 언급되는 컴퓨터 구조나 시스템 프로그래밍에서 공부해야 할 내용인데 이미 알더라도 복습하는 내용으로 넘어가려고 한다. CPU(Central Processing Unit)는 중앙처리장치로 메모리에 적재된.. 2024. 4. 21.
4. 시분할 다중프로그래밍(Time Sharing Multi-Programming) OS 시분할 다중 프로그래밍의 출현 배경? 시분할 다중 프로그래밍은 다중 프로그래밍 기법과 거의 동시에 연구가 시작되었다. 다중 프로그래밍과 마찬가지로 배치 처리에 대한 문제점을 개선하고자 연구되었으나 다중 프로그래밍 방식의 문제점도 발견하고 연구하게 되었다. 발견한 문제점은 비대화식 처리 방식과 그로 인한 느린 응답, 오랜 대기 시간의 문제이다. 대화식 시스템 시분할 운영체제는 사용자에게 빠른 응답을 제공하기 위해 대화식 시스템을 제안했다. 키보드와 모니터를 통해 메인 컴퓨터에 모뎀 간 연결 후 시간에 따른 처리를 하는 방법이다. 각 사용자는 메인 PC에 여러 키보드와 여러 터미널을 통해 응답 받을 수 있다. 핵심은 사용자의 입력 속도보다 컴퓨터의 연산 속도가 빠르므로 사용자 입장에서는 응답이 느리다고 생각.. 2024. 4. 21.
3. 다중 프로그래밍 (Multi-Processing) OS 다중 프로그래밍 기법이 출현한 배경을 생각해보자. 이전, 배치 처리에서 어떤 문제로 인해 다중프로그래밍 방식의 아이디어가 제안 되었을 것이다. 배치 처리는 일괄적으로 처리할 수 있게 되었지만 CPU 작업 중 특정 명령 코드에서 I/O 작업을 요청한다. 그럼 컴퓨터는 CPU 작업을 하다가 I/O 작업을 하게 되는데 이 작업이 반복되는 현상이 발생한 것이다. 실질적으로 컴퓨터에서 처리를 하는 HW는 CPU인데 컴퓨터가 I/O 작업을 하면서 CPU는 대기하는 현상이 발생한다. 이것을 CPU idle time 이라고 한다. CPU IDLE Time을 줄이면 CPU 활용률(처리율)이 증가하게 된다. 그래서 다중 프로그래밍 기법이 출현한 것이다. 다중 프로그래밍 기법은 여러 프로그램을 메모리가 수용할만큼 메모리에 .. 2024. 4. 21.
2. 운영체제의 발전 운영체제가 발전한 과정 운영체제는 크게 고정 프로그래밍 방식, 내장 프로그래밍 방식, 로더 프로그램, 원시 운영체제, 최초의 운영체제(배치 운영체제), 다중 프로그래밍 운영체제, 시분할 다중프로그래밍, 개인용 운영체제로 나뉜다. 그 외, 임베디드 운영체제, 모바일 운영체제, 실시간 운영체제, 서버 운영체제 등이 있다. 고정 프로그래밍 방식 (fixed program computer) 1940년대 컴퓨터로 OS에 대한 개념이 없을 때이다. 이 때는 HW만 존재했고 키보드로 명령을 하는 개념이 없을 때이다. 그럼 어떻게 프로그래밍을 했을까? 종이에 스위치와 전선 연결도를 작성하며 배선판에 전선을 연결하는 방식을 사용했다. 하나의 계산을 위해 한 번의 입력(전선 연결)이 오래 걸리고 연산에도 오래 걸려서 고정.. 2024. 4. 21.
1. 운영체제(OS, Operating System)란? 운영체제는 사용자와 H/W 사이에서 중계 역할을 하는 녀석이다. 아래 그림을 통해 어떻게 중계하는지 확인할 수 있다. 실제 응용 소프트웨어를 사용하기 위해 키보드, 마우스 입력을 모두 처리하고 모니터의 출력을 처리하는 작업은 OS가 다 수행하고있다. 그럼 여기서 의문점이 발생할 것이다. OS는 하드웨어인가? 소프트웨어인가? 어느 위치에서 동작하는가? OS는 하드웨어의 입/출력을 관리하지만 정확히 소프트웨어에 해당한다. 소프트웨어 중에서도 System Software에 해당된다. 그럼 또, System Software가 무엇이냐고 묻게 될 것이다. OS에서 System Software에 대해서는 자세하게 알 필요가 없다. 왜냐하면 시스템 프로그래밍이나 리눅스 시스템 프로그래밍과 같은 System Softw.. 2024. 4. 20.
Opinionated과 Out of the box Opinionated '자기 주장이 강한'이라는 의미를 갖는 이 용어는 SpringBoot의 Concept로 볼 수 있다. SpringBoot는 매번 Servlet을 띄워야하는 Spring의 문제점을 해결하려고 탄생한 Framework이다. 이런 Containerless 성질뿐만 아니다. 개발자가 개발에 집중할 수 있도록 기본적인 가이드(?), 로드맵(?)을 제공하고있다. Spring Framework의 설계 철학 극단적으로 유연하다. 의존성 주입 (Dependency Injection, DI) 관점지향 프로그래밍 (Aspect-Oriented Programming, AOP) IoC(Inversion of Control) Container 다양한 모듈, 확장성, ... 다양한 관점을 수용한다 웹 개발, .. 2024. 3. 4.
Containerless와 독립 실행형 프로그램(standalone application) 보통 무언가가 필요 없을 때 less를 사용한다. Containerless는 이름 그대로 Container가 필요없다는 뜻을 가지게 되는데, 이것이 스프링 부트가 시작되는 배경으로 볼 수 있다. Container? 모듈과 컴포넌트, 컨테이너에 대한 포스트를 참고하시고 오면 좋다. 위 포스트에서 모듈과 컴포넌트는 소프트웨어 공학에서 정의한 내용이다. 이 포스트의 컴포넌트는 FrontEnd에서 설명하는 컴포넌트와 BackEnd에서 설명하는 컴포넌트가 파생 된 것. 우리가 웹, 앱에서 특정 기능들(글쓰기, 메일 작성, ...)을 사용하려면 FrontEnd에서 보이는 컴포넌트를 사용하면 해당 컴포넌트가 백엔드의 컴포넌트와 연결되어 우리에게 정보를 제공하게 된다. SpringBoot는 Java 기반 FrameWo.. 2024. 3. 4.
백준 - [BOJ 3085] 사탕게임 백준 온라인 져지(BOJ)에서 제공 되는 3085번 문제는 브루트 포스(Brute-Froce, 완전 탐색) 유형이다. 해당 문제는 code.plus 기초 2/2, 브루트포스에 게시된 문제이다. 문제 상근이는 어렸을 적에 "봄보니 (Bomboni)" 게임을 즐겨했다. 가장 처음에 N×N크기에 사탕을 채워 놓는다. 사탕의 색은 모두 같지 않을 수도 있다. 상근이는 사탕의 색이 다른 인접한 두 칸을 고른다. 그 다음 고른 칸에 들어있는 사탕을 서로 교환한다. 이제, 모두 같은 색으로 이루어져 있는 가장 긴 연속 부분(행 또는 열)을 고른 다음 그 사탕을 모두 먹는다. 사탕이 채워진 상태가 주어졌을 때, 상근이가 먹을 수 있는 사탕의 최대 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 보드의 크기 N이 .. 2024. 3. 1.
백준 - [BOJ 12094] A와 B 백준 온라인 져지(BOJ)에서 제공 되는 12094번 문제는 그리디(Greedy, 탐욕법) 유형이다. 해당 문제는 code.plus 중급 1/3, 그리디 알고리즘에 게시된 문제이다. 문제 수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수빈이는 간단한 게임을 만들기로 했다. 두 문자열 S와 T가 주어졌을 때, S를 T로 바꾸는 게임이다. 문자열을 바꿀 때는 다음과 같은 두 가지 연산만 가능하다. 문자열의 뒤에 A를 추가한다. 문자열을 뒤집고 뒤에 B를 추가한다. 주어진 조건을 이용해서 S를 T로 만들 수 있는지 없는지 알아내는 .. 2024. 2. 29.