이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 프로세스 프로그램은 실행되기 전까지는 그저 보조기억장치에 있는 데이터 덩어리 보조기억장치에 저장된 프로그램을 메모리에 적재하고 실행하는 순간 프로세스가 된다. 프로세스 종류 Foreground Process : 사용자가 볼 수 있는 공간에서 실행되는 프로세스 Background Porcess : 사용자가 볼 수 없는 공간에서 실행되는 프로세스 백그라운드 프로세스 중에서 사용자와 직접 상호작용할 수 있는 백그라운드 프로세스도 있지만, 사용자와 상호작용하지 않는 백그라운드 프로세스도 있다. 이러한 사용자와 상호작용하지 않는 백그라운드 프로세스를 유닉스에서는 데몬(daemon..
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 운영체제의 심장, 커널 운영체제는 현존하는 프로그램 중 규모가 가장 큰 프로그램 중 하나이다. 대표적인 운영체제인 리눅스를 구성하는 소스 코드는 천만 줄이 넘는다. 또한 세상에는 다양한 운영체제가 있다. 그래서 운영체제가 응용 프로그램에 제공하는 기능들, 달리 말해 운영체제 서비스 또한 매우 다양하다. 스마트폰이 사용자에게 제공하는 서비스 종류는 다양하지만, 그중에서도 전화, 문자, 인터넷 기능처럼 가장 핵심적인 서비스가 있다. 마찬가지로 운영체제가 응용 프로그램에 제공하는 서비스 종류는 다양하지만, 그중에서도 가장 핵심적인 서비스들이 있다. 이러한 운영체제의 핵심 서비..
문제설명 소스코드 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println((char)(sc.nextInt()-1+'가')); } } 설명 import java.util.*; public class Main { public static void main(String[] args) { System.out.println((char)44032 + " = " + (int)'가'); for(int i = 0; i < 11172; ++i){ if(i % 50 == 0)System.out.println(); System.out.pr..
Java SE(Java Standard Edition) 자바의 표준안이라고 볼 수 있다. 자바라는 언어가 어떠한 문법적인 구성을 가졌는지와 같은 것들을 정의하고 있다. 이것은 구체적인 소프트웨어가 아니고 그 소프트웨어의 설계도라고 할 수 있다. 이 설계도에 따라서 Java가 만들어지게 된다. JavaSE 7은 버전 7에 대한 설계도이다. JDK(JAVA Development Kit) Java SE의 표준안에 따라서 만들어진 구체적인 소프트웨어 Java 프로그램을 실행하면 java 코드를 컴파일하는 컴파일러와 개발에 필요한 각종 도구, JRE가 포함되어 있다. 개발자를 위한 자바 버전 JRE(Java Runtime Environment) 실제로 동작하는데 필요한 JVM, 라이브러리, 각종 파일들이 포함되어..
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 컴퓨터 부품들은 전기만 공급하면 마치 마법처럼 알아서 작동하는 것이 아니다. 운영체제라는 프로그램의 지휘하에 작동한다. 사람으로 비유한다면, 육체는 하드웨어이고 영혼(?)이 운영체제(소프트 웨어)이다. 운영체제란 대표적인 데스크톱 운영체제로는 윈도우, macOS, 리눅스가 있고, 스마트폰 운영체제로는 안드로이드와 iOS가 있다. 모든 프로그램은 하드웨어를 필요로 한다. 간단한 1+2를 계산하는 프로그램이라도 연산장치를 수행할 CPU와 이를 출력할 모니터가 필요하다. 이때 프로그램 실행에 마땅히 필요한 요소들을 가리켜 시스템 자원, 혹은 줄여서 자원이라고 한다. CPU, ..
문제설명 소스코드 #include using namespace std; int main() { int T; int N; int sum = 0; cin >> T; for (int i = 0; i > N; int** arr = new int* [N]; //N개의 배열 동적할당 for (int k = 0; k > arr[j][k]; if (arr[j][k] > dm) dm = arr[j][k]; // 당일 이익 최고가 저장 } sum += dm..
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 입출력 작업을 수행하려면 CPU와 장치 컨트롤러가 정보를 주고받아야 한다. CPU와 장치 컨트롤러와 의 정보 교류의 방법은 크게 아래와 같이 3가지가 있다. 프로그램 입출력 인터럽트 기반 입출력 DMA 입출력 프로그램 입출력 프로그램 입출력은 기본적으로 프로그램 속 명령어로 입출력장치를 제어하는 방법 CPU가 프로그램 속 명령어를 실행하는 과정에서 입출력 명령어를 만나면 CPU는 입출력장치에 연결된 장치 컨트롤러와 상호작용하며 입출력 작업을 수행 메모리에 저장된 정보를 하드 디스크에 백업하는 상황이라면 CPU는 대략 아래 과정으로 입출력 작업을 한다. 1. CPU는 하드..
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 입출력장치는 모니터, 키보드 스피커 마우스뿐만 아니라 외장 하드 디스크, USB메모리 등도 포함된다. 보조기억장치가 컴퓨터 내부와 정보를 주고받는 방식은 입출력장치와 크게 다르지 않기 때문이다. 장치 컨트롤러 입출력장치는 CPU, 메모리보다 다루기가 더욱 까다롭다. 이유는 두 가지가 있다. 입출력 장치에는 종류가 너무나도 많다. 일반적으로 CPU와 메모리는 데이터 전송률이 높지만, 입출력 장치의 데이터 전송률은 낮다. 입출력 장치는 여러 개가 있고 각각마다 제조사마다 차이가 조금씩 있다. 따라서 다양한 입출력장치와 정보를 주고받는 방식을 규격화하기가 어렵다. 전송률이란 ..