전체 글

Computer Science/운영체제

4. CPU 스케줄링

1. CPU 스케줄링스케줄링의 단계고수준 스케줄링: 전체 시스템의 부하를 고려하여 작업을 시작할지 말지 결정중간수준 스케줄링: 시스템에 과부하가 걸려서 프로세스 수를 조절해야 한다면 이미 활성화된 프로세스 중 일부를 보류 상태로 보냄저수준 스케줄링: 실제 작업 수행스케줄링의 목적공평성: 모든 프로세스가 자원을 공평하게 배정받아야 함효율성: 시스템 자원이 유휴 시간없이 사용되도록 해야하고, 유휴 자원을 사용하려는 프로세스에 우선권을 줘야함안정성: 우선순위를 사용하여 중요 프로세스가 먼저 작동하도록 배정함으로써 시스템 자원을 점유하거나 파괴하려는 프로세스로부터 자원을 보호해야함확장성: 프로세스가 증가해도 안정적으로 작동하게 해야함반응 시간 보장: 시스템은 적절한 시간안에 프로세스의 요구에 반응해야함무한 연기..

Computer Science/운영체제

3. 프로세스와 스레드

1-1. 프로세스프로그램특정한 목적을 수행하기 위한 명령어, 데이터의 집합프로세스실행을 위해 메모리에 올라온 동적인 상태일괄 작업 방식큐로 작업을 처리, 먼저 들어온 작업을 처리해야 뒤에 들어온 작업을 할 수 있기 때문에 작업 효율이 떨어짐시분할 방식시간을 배분하여 작업을 처리, 여러 작업을 순서에 상관없이 번갈아 가면서 수행할 수 있음1-2. 프로그램 → 프로세스 전환프로세스 제어 블록(PCB; Process Control Block)프로그램이 프로세스로 전환될 때 운영체제가 만드는 작업 지시서PCB의 유무가 프로세스가 되거나 종료되거나를 결정PCB가 가진 대표적 정보프로세스 구분자(PID; Process IDentification): 각 프로세스를 구분하는 구분자메모리 관련 정보: 프로세스의 메모리 ..

Computer Science/운영체제

2. 컴퓨터 구조와 성능 향상

1-1. 하드웨어의 구성컴퓨터의 구성필수장치: CPU, 메인메모리주변장치: 입력장치, 출력장치, 보조기억장치저장장치메인메모리보다 느리지만 저렴하고 용량이 큼데이터를 영구적으로 저장종류자성 이용: 카세트테이프, 플로피디스크, 하드디스크 등레이저 이용: CD, DVD, 블루레이디스크 등메모리(램) 이용: USB 메모리, SD 카드, CF 카드, SSD 등속도: 레지스터 > 캐시 메모리 > 메인메모리 > 버퍼 > 보조기억장치메인보드CPU와 메모리 등의 다양한 부품을 연결하는 판장치들을 bus로 연결함1-2. 폰노이만 구조CPU, 메인메모리, 입출력장치, 보조기억장치가 버스로 연결되어 있는 구조보조기억장치에서 메인메모리로 가지고 올라와야 실행 가능 → 병목현상 발생1-3. 기초 용어8bit = 1Byte, 1B..

Computer Science/운영체제

1. 운영체제 개요

1-1. 운영체제란?컴퓨터 전체를 관리 및 운영하는 시스템 소프트웨어하드웨어와 응용프로그램 관리 ex)PC 운영체제: Windows, mac, unix, linux, ms-dos 등모바일 운영체제: Android, iOS, 심비안, 타이젠, 바다 등1-2. 운영체제 정의커널(Kernerl)과 인터페이스(Interface)로 나뉨.커널1. 운영체제의 핵심 기능을 모아놓은 것으로 모든 컴퓨터의 자원을 관리.2. 커널을 통해서만 컴퓨터 자원에 접근 가능1-3. 운영체제 역할역할자원 관리: 컴퓨터 시스템 자원을 응용프로그램에 나눠줌, 여러 개의 프로그램이면 적당한 순서로 배분, 적절한 시점에 회수 후 다른 응용프로그램에 나눠줌자원 보호하드웨어 인터페이스 제공: 사용자가 간단히 장치를 사용할 수 있게 하드웨어 인..

Back-end/JPA

JPA - 0. 개념

1. JPA란JPA(Java Persistence API)는 자바 애플리케이션에서 관계형 데이터베이스를 관리하고 조작하기 위한 표준 API로 자바 객체와 데이터베이스 테이블 간의 매핑을 통해 데이터베이스와의 상호작용을 단순화하고, 객체 지향적인 방식으로 데이터 관리를 할 수 있도록 도와주는 API다.객체-관계 매핑(ORM, Object-Relational Mapping)을 제공하여, SQL을 사용하지 않고도 데이터베이스 작업을 할 수 있게 하는 것이 목표라고 할 수 있다.2. ORM?ORM은 객체 지향 프로그래밍 언어에서 정의된 객체와 관계형 데이터베이스의 테이블을 자동으로 매핑해주는 기술이다.ORM을 사용하면 아래의 장점을 기대할 수 있다.데이터베이스와 상호작용할 때 반복되는 코드 작성을 줄여줌.객체 ..

프로그래밍 언어/JAVA

Optional

Optional은 변수에 null이 아닌 값을 포함할 수도 있고 null일 수도 있는 상황을 처리하기 위한 클래스이다. Java 8에서 처음 도입되었고, 주로 NullPointerException을 방지하고, 코드의 가독성을 높이기 위해 사용된다.Optional의 주요 메서드값의 존재 여부 확인isPresent(): Optional 객체가 값을 가지고 있는지 여부를 확인ifPresent(Consumer): 값이 존재할 때 특정 동작을 수행값 가져오기get(): 값이 존재하면 그 값을 반환하고, 값이 없으면 NoSuchElementException을 발생시킴orElse(T other): 값이 존재하면 그 값을 반환하고, 그렇지 않으면 기본 값을 반환orElseGet(Supplier other): 값이 존재..

프로그래밍 언어/JAVA

Interface

자바에서 인터페이스(Interface)는 메서드의 집합을 정의하는 데 사용되는 추상 타입이다. 인터페이스는 클래스가 구현해야 하는 메서드의 서명을 지정하지만, 실제 구현은 제공하지 않는다. 이를 통해 특정 기능을 클래스가 구현하도록 강제할 수 있다.자바 인터페이스의 주요 특징추상 메서드(abstract methods)인터페이스 내의 모든 메서드는 기본적으로 abstract이며, 메서드 본문이 없다.자바 8부터는 default 메서드와 static 메서드를 사용할 수 있어 메서드 본문을 가질 수 있다.상수(constants)인터페이스 내에 정의된 변수는 'public static final'로 자동으로 지정되며, 상수로 취급된다.다중 상속클래스는 하나의 부모 클래스만 상속할 수 있지만, 여러 개의 인터페이..

개발 관련 지식

API, 라이브러리, 프레임워크

API, 라이브러리, 프레임워크에 대한 개념들은 어렴풋이 알 것 같으면서도 막상 설명을 하려면 모호한 부분이 많은데 이를 각각 알아보고 정리를 해보겠다. 1. API API(Application Programming Interface)는 컴퓨터나 컴퓨터 프로그램 간의 연결을 돕는 인터페이스다. 여기서 Interface란 상호 간의 소통에 도움을 주는 시스템을 말한다. 일상생활에서 TV와 TV를 조작하는 나 사이의 소통에 도움을 주는 리모컨을 일종의 Interface라고 할 수 있다. 예를 들자면, 어떤 응용프로그램(Application)에서 구글에서 만든 맵을 가져다가 쓰고 싶다면, 구글의 맵 API를 사용하면 된다. 맵 API는 맵 그 자체가 아니라 이미 구현되어 있는 구글의 맵을 활용할 수 있게 연결..

sngyng
devsy