분류 전체보기 77

[운영체제] 멀티프로세스와 멀티스레드

* 프로그램 & 프로세스 - 프로그램 : 어떤 작업을 위해 실행할 수 있는 파일 - 프로세스 1. 컴퓨터로부터 연속적으로 실행되고 있는 컴퓨터 프로그램 2. 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체) 3. 운영체제로부터 시스템 자원을 할당받는 작업의 단위, 동적인 개념으로 실행된 프로그램 4. 독립된 메모리 영역 5. 기본적으로 프로세스는 최소 1개의 스레드를 가지고 있다. 6. 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC)을 사용해야 한다.(Ex 파이프, 파일, 소켓..) * 프로그램과 프로세스의 관계 프로세스 = 프로그램 + 프로세스 제어 블록(PCB) 프로그램 = 프로세스 - 프로세스 제어 블록(PCB) * 스레드 1. 프로세스 내에서 실행되는 ..

[Spring] Springboot 사용법과 MVC 패턴

* Springboot 사용법 Spring Initializr 해당 사이트에 접속하면 spring 프로젝트를 생성할 수 있다. 어떤 방식(gradle, maven...), 어떤 언어(Java, Kotiln...), 어떤 버전(SNAPSHOT은 개발 중인 버전으로 선택 안하는 것을 권장)의 프로젝트를 생성할지 선택한다. 그 다음 Dependncies에서 필요한 부분을 add해준다. 마지막으로 Generate를 통해 zip 파일을 다운받고 압축을 푼 후 프로젝트를 import 해주면 된다. * 성공한 화면 * MVC 패턴 MVC 패턴은 Model-View-Controller의 약자로, 애플리케이션을 데이터로 처리하는 모델(Model), UI인 뷰(View), 모델과 뷰 사이에서 흐름을 제어하는 컨트롤러(Co..

Java/Spring 2022.12.30

[Java] 싱글 쓰레드와 멀티 쓰레드

* 쓰레드와 프로세스 프로세스란 간단히 말해서 '실행 중인 프로그램'이다. 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)을 할당받아 프로세스가 된다. 프로세스는 프로그램을 수행하는 데 필요한 데이터와 메모리 등의 자원 그리고 쓰레드로 구성되어 있으며 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 바로 쓰레드이다. 그래서 모든 프로세스에는 최소한 하나 이상의 쓰레드가 존재하며, 둘 이상의 쓰레드를 가진 프로세스를 '멀티 쓰레드 프로세스'라고 한다. * 멀티 쓰레딩의 장점 1. CPU의 사용률을 향상시킨다. 2. 자원을 보다 효율적으로 사용할 수 있다. 3. 사용자에 대한 응답성이 향상된다. 4. 작업이 분리되어 코드가 간결해진다. * 싱글 쓰레드와 멀티 쓰레드 두 개의 작업을 하나의 ..

Java/Java 2022.12.30

[운영체제] CPU와 메모리

* CPU의 구성과 동작 CPU는 명령어를 해석하여 실행하는 장치로 요리사 모형에서는 요리사에 해당한다. CPU는 산술논리 연산장치, 제어장치, 레지스터로 구성되며, 이것들의 협업으로 작업을 처리한다. 1. 산술논리 연산장치 요리사가 재료를 삶거나 찌거나 볶듯이 CPU에서 데이터를 연산하는 장치가 산술논리 연산장치이다. 산술논리 연산장치는 데이터의 덧셈, 뺄셈, 곱셈, 나눗셈 같은 산술 연산과 AND, OR 같은 논리 연산을 수행한다. 2. 제어장치 요리를 할 때 요리사의 머릿속에는 '도마 위의 재료를 가져와라', '양파껍질을 미리 벗겨놓아라', '다 된 요리를 접시에 담아라' 등의 지시가 이루어진다. 이처럼 CPU에서 작업을 지시하는 부분을 제어장치라고 한다. 제어장치는 명령어를 해석하여 제어 신호를 ..

[운영체제] 컴퓨터의 기본 구성

* 하드웨어의 구성 컴퓨터는 중앙처리장치(CPU), 메인메모리, 입력 장치, 출력 장치. 저장 장치로 구성된다. 중앙처리장치와 메인 메모리는 필수 장치, 중앙처리장치와 메인메모리 외의 부품은 주변 장치라고 한다. 메인메모리는 전력이 끊기면 데이터를 잃어버리기 때문에 데이터를 영구히 보관하려면 하드디스크나 USB 메모리를 사용해야 한다. 그래서 메인메모리를 제1 저장장치, 하드디스크나 USB 메모리 같은 메모리를 제2 저장장치 또는 보조저장장치라고 부른다. 1. CPU와 메모리 CPU는 명령어를 해석하여 실행하는 장치로, 인간에 비유하면 두뇌에 해당한다. 메모리는 작업에 필요한 프로그램과 데이터를 저장하는 장소로, 바이트 단위로 분할되어 있으며 분할 공간마다 주소로 구분한다. 2. 입출력장치 입력장치는 외..

[운영체제] 운영체제의 구조

* 커널과 인터페이스 커널(Kernel)은 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것으로, 자동차에 비유하자면 엔진에 해당한다. 세단, 스포츠카, SUV 등 자동차의 종류는 다양하지만 성능은 엔진이 좌우하는데, 이와 마찬가지로 운영체제의 성능은 커널이 좌우한다. 자동차가 움직이는 데에는 엔진은 물론이고 사람이 조작할 수 있는 핸들과 브레이크가 필요하다. 또한 현재 시속, 기어의 상태, 엔진의 온도 등을 알려주는 계기판이 있어야 하는데, 이를 인터페이스라고 한다. 운영체제에도 인터페이스가 있는데, 이는 커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려주는 역할을 한다. 운영체제는 크게 두 부분으로 나뉜다. 사용자와 응용 프로그램에 인접하여 커널에 ..

[운영체제] 시분할 시스템

* 시분할 시스템의 개념 1960년 후반에 컴퓨터의 크기가 작아지고 계산 능력이 향상되었다. 하지만 허가받은 몇몇 사용자만 사용할 수 있는 데다 고가였다. 값비싼 기계로 한 번에 하나의 작업만 수행하는 것은 낭비라 효율적으로 사용하기 위한 연구가 진행된 결과 다중 프로그래밍(Muitiprogramming) 기술이 개발되었다. 다중 프로그래밍은 하나의 CPU로 여러 작업을 동시에 실행하는 기술로, 한 번에 하나의 작업만 가능한 일괄 작업 시스템에 비해 효율성이 뛰어났다. 그런데 다중 프로그래밍은 컴퓨터 내부에서 어떻게 구현되는 것일까? 여러 작업이 하나의 CPU를 공동으로 사용하면 작업이 끊겨 보일텐데 다중 프로그래밍 시스템에서는 여러 작업이 동시에 실행되는 것처럼 보인다. 이는 시간을 분할하는 방법 때문..

[취업] 2023년 하반기 네이버 파이낸셜 인턴쉽(BE) 코딩 테스트 후기

* 개요 취업에 관련된 필자의 이번 포스팅은 네이버 파이낸셜 코딩 테스트 후기이다. 코딩 테스트 후기에 앞서, 카카오뱅크는 코테도 못보고 서탈하였지만, 이번에는 1차 전형인 서류에서 붙었다. 저번 피드백을 경험 삼아 열심히 적고, 프로젝트 경험, 깃허브 주소, 기술 블로그까지 세세히 적었다. 필자의 노력을 알아봐주신 것일까, 서류에서 붙게 되었다. 물론 아직도 미숙하지만, 필자 스스로 발전되었다고 느껴져 뿌듯했다. 아무튼 당당히 서류를 붙고 저번주에 코테를 보았다. 직무마다 코딩 테스트의 문제가 다르다고 하였는데, 필자는 백엔드 직무이기에 백엔드 직무 코테를 보았다. * 난이도? 문제는 총 3문제가 나왔다. 문제들을 보니 카카오의 코딩 테스트와는 조금 결이 다른 것 같았다. 카카오는 알고리즘 위주로 문제..

취업 2022.12.24

[Java] Math.random 메서드

* 개요 자바로 코딩할 때, 난수를 생성해야 할 때가 있다. 그 때마다 자꾸 Math.random 메서드를 까먹는다. 까먹지 않기 위해 포스팅을 하기로 하였다. * Math.random 메서드 public class test { public static void main(String[] args) { double data = Math.random(); System.out.println(data); // 0.0.. ~ 1.0..까지의 난수 생성 System.out.println((int)(data * 10)); // 0 ~ 10까지의 난수 생성 System.out.println((int)(data * 100)); // 0 ~ 100까지의 난수 생성 System.out.println((int)(data * ..

Java/Java 2022.12.24

[알고리즘] 프로그래머스 - 이중우선순위큐(Java)

코딩테스트 연습 - 이중우선순위큐 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr * 문제 설명 이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다. 명령어수신 탑(높이) I 숫자 큐에 주어진 숫자를 삽입합니다. D 1 큐에서 최댓값을 삭제합니다. D -1 큐에서 최솟값을 삭제합니다. 이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구..