전체 글

호기심 가득한 밤을 하나씩 밝히는 밝은별입니다.
백엔드/운영체제

[운영체제] 운영체제(OS), 시스템 콜(System Call)

운영체제(OS) 운영체제는 컴퓨터의 자원들을 효율적으로 관리하며 사용자가 컴퓨터를 편리하고 효율적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임이다. 운영 체제는 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로, 다른 응용프로그램이 유용한 작업을 할 수 있도록 제공해 준다. 운영체제의 구조 커널 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것으로, 자동차가 운영체제라고 한다면 엔진이 커널에 해당한다. 세단, 스포츠카, SUV 등 자동차의 종류는 다양한 것처럼 운영체제의 종류는 다양하지만 성능을 결정하는 것은 커널이 좌우한다. 컴퓨터와 전원을 켜면 운영체제는 이와 동시에 수행된다. 소프트웨어가 컴퓨터 시스템에서..

백엔드/운영체제

[운영체제] 세마포어(semaphore) 뮤텍스(mutex) 모니터(Monitor)

critical section의 동기화 문제를 해결하기 위해서는 세 가지 조건을 만족해야 한다. mutual exclution (상호 배제) bounded wating (한정된 대기) prograss(진행의 융통성) 2023.04.22 - [백엔드/운영체제] - 경쟁 조건(Race Condition)과 임계 구역(Critical Section) 경쟁 조건(Race Condition)과 임계 구역(Critical Section) 프로세스 간 메시지를 전송하거나, 공유메모리를 통해 공유된 자원에 여러 개의 프로세스가 동시에 접근하면 임계 구역(Critical Section) 안에서 경쟁 조건(Race Condition)이 생길 수 있다. 이를 해결하 brightstarit.tistory.com critica..

백엔드/네트워크

[네트워크] 포워드 프록시(forward proxy)와 리버스 프록시(reverse proxy)

프록시 서버(Proxy Server) 프록시 서버(Proxy Server)는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램을 가리킨다. 서버와 클라이언트 사이에 중계기로써 대리로 통신을 수행하는 것을 가리켜 '프록시' 그 중계 기능을 하는 것을 프록시 서버라고 부른다. 좀 더 구체적으로 설명하면 아래와 같이 진행된다. 클라이언트에서 프록시 서버로 전달할 요청을 보낸다. (클라이언트 -> 프록시) 프록시 서버는 클라이언트로부터 전달받은 요청을 서버에 요청한다. (프록시 -> 서버) 서버는 요청에 맞게 데이터를 프록시 서버로 전달한다. (서버 -> 프록시) 프록시 서버는 서버로부터 전달받은 데이터를 클라이언트에 전달한다. (프록시 -> 클..

백엔드/운영체제

[운영체제] 경쟁 조건(Race Condition)과 임계 구역(Critical Section)

프로세스 간 메시지를 전송하거나, 공유메모리를 통해 공유된 자원에 여러 개의 프로세스가 동시에 접근하면 임계 구역(Critical Section) 안에서 경쟁 조건(Race Condition)이 생길 수 있다. 이를 해결하기 위해 데이터를 한번에 하나의 프로세스만 접근할 수 있도록 제한을 두는 동기화 방식을 취해야 한다. 동기화 도구에는 대표적으로 뮤텍스(Mutex)와 세마포어(Semaphore)가 있다. 이들은 모두 공유된 자원의 데이터를 여러 스레드/프로세스가 접근하는 것을 막는 역할을 한다. 경쟁 조건 (Race Condition) 경쟁 조건(race condition)은 2개 이상의 프로세스가 공유 자원을 병행적으로 읽거나 쓰는 상황을 말하며, 공유 자원 접근 순서에 따라 실행 결과가 달라지는 상..

백엔드/운영체제

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

프로세스(Process) Process is a program in execution 프로세스란 실행 중에 있는 프로그램을 의미한다. 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 객체)이며 스케줄링의 대상이 되는 작업(task)과 같은 의미로 쓰인다. 하드디스크에 있는 프로그램을 실행하면, 실행을 위해서 메모리 할당이 이루어지고, 할당된 메모리 공간으로 바이너리 코드가 올라가게 된다. 이 순간부터 프로세스라 불린다. 특징 각 프로세스는 별도의 주소 공간에서 실행되며, 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다. Code : 프로그램을 실행시키면 실행파일 내에 존재하는 명령어가 메모리상에 올라가야 프로그램을 동작시킬 수 있다. 이 명령어들을 위해..

백엔드/Java

[Java] 생성자에 매개변수가 많다면 빌더를 고려하라

점층적 생성자 패턴 정적 팩터리와 생성자에는 똑같은 제약이 하나 있다. 선택적 매개변수가 많을 때 적절히 대응하기 어렵다는 점이다. 프로그래머들은 이럴 때 점층적 생성자 패턴을 즐겨 사용했다. 필수 매개변수만 받는 생성자, 필수 매개변수와 선택 매개변수 1개를 받는 생성자, 선택 매개변수를 2개까지 받는 생성자,.. 선택 매개변수를 전부 다 받는 생성자까지 늘려가는 방식이다. public class NutritionFacts { private final int servingSize; private final int servings; private final int calories; private final int fat; private final int sodium; private final int ca..

백엔드/Java

[Java] 생성자 대신 정적 팩터리 메서드를 고려하라

장점 이름을 가질 수 있다. 생성자에 넘기는 매개변수와 생성자 자체만으로는 반환될 객체의 특성을 제대로 설명하지 못한다. 반면 정적 팩터리는 이름만 잘 지으면 반환될 객체의 특성을 쉽게 묘사할 수 있다. 예를 들어 생성자인 BigInteger(int, int, Random) 보다 정적 팩터리 메서드인 BigInteger.probablePrime이 `값이 소수인 BigInteger를 반환한다.` 는 의미가 더 와닿을 것이다. 하나의 시그니처로는 생성자를 하나만 만들 수 있다. public class Order { private boolean prime; private boolean urgent; private Product product; public Order(boolean prime, Product p..

백엔드/네트워크

[네트워크] HTTPS

HTTP HTTPS 차이점 HTTP는 암호화가 되지 않는 Plain Text를 전송하는 프로토콜이었기 때문에, HTTP로 비밀번호나 주민등록번호등을 주고받으면 제 3자가 정보를 조회할 수 있었다. 이 문제를 해결하기 위해 HTTPS가 등장하게 되었다. HTTPS는 SSL(Secure Socket) 인증서를 사용하는 HTTP이다. SSL(또는 TLS) 인증서는 일반 HTTP 요청 및 응답을 암호화합니다. 따라서 HTTPS는 HTTP보다 더 안전한 보안용 프로토콜이라고 할 수 있다. HTTP와 HTTPS의 유일한 차이점은 HTTPS를 사용한 웹 페이지를 통해 전송되는 모든 데이터는 추가적인 보안 계층이 있다. 이를 TLS(전송 계층 보안) 프로토콜이라고 한다. 모든 유형의 데이터는 변경되거나 손상될 수 없는..

밝은별 개발자
밝은별 개발 블로그