[OS] 시스템 콜(System Call)
·
Computer Science/Operating System
운영체제는 왜 하드웨어 접근을 막을까?운영체제는 컴퓨터의 자원을 보호하기 위해 프로그램이 하드웨어(CPU, 메모리, 디스크 등)에 직접 접근하는 것을 막는다.만약 모든 프로그램이 아무런 제약 없이 하드웨어에 접근할 수 있다면 어떻게 될까?자원의 무질서한 관리: 여러 프로그램이 동시에 메모리의 같은 공간에 데이터를 쓰려고 하거나, 하드 디스크의 특정 파일을 마음대로 삭제할 수 있다.시스템 전체의 불안정성: 한 프로그램의 실수가 전체 컴퓨터 시스템에 치명적인 영향을 줄 수 있다. 예를 들어, 잘못된 메모리 접근으로 인해 운영체제 자체가 멈출 수 있다.이러한 문제를 방지하기 위해, 운영체제는 자신을 통해서만 하드웨어 자원에 접근하도록 통제한다.프로그램은 필요한 작업이 있을 때 운영체제에 도움을 요청하고, 운영..
[CS] 컴퓨터 구조 한눈에 정리-01
·
Computer Science
소프트웨어 계층운영체제란?하드웨어 자원을 관리하고 응용 소프트웨어가 실행될 수 있는 기반을 제공한다.예) Windows의 작업 관리자로 프로세스·메모리 점유율 확인.응용 소프트웨어란?OS 위에서 구동되는 사용 목적 중심 프로그램.예) Microsoft Office, Chrome / Edge / Firefox.하드웨어 계층CPU — “컴퓨터의 두뇌”구성역할예시ALU덧셈·AND/OR 등 산술·논리 연산5 + 3 → 8CU명령어 인출→해석→실행 지휘“ADD R1,R2”를 ALU에 전달레지스터초고속 작업 공간EAX = 0x1A3FL1/L2/L3캐시RAM과 CPU 속도 차 완화자주 쓰이는 데이터 임시 저장TIP : 현대 CPU는 캐시·파이프라인·레지스터로 성능을 끌어올린다.기억장치분류특징대표 예시RAM속도 빠름,..
[OOP] SOLID 다섯 가지 설계 원칙
·
Computer Science/Design Pattern
1. SOLID란?운영체제 관점에서 ‘컨텍스트 스위칭’이 CPU 자원을 효율적으로 쓰기 위한 규칙이라면,SOLID는 객체지향 코드의 “자원(의존성) 관리 규칙”이다.Robert C. Martin(삼촌 밥)이 2000년대 초 정리한 다섯 가지 원칙으로, 목표는 단 하나다.“변화에 안전한 코드”유지보수 → 버그 수정 시 영향 범위 최소화확장성 → 새 기능을 붙일 때 기존 코드 수정 최소화테스트 용이성 → 단위 테스트 격리, Mock 삽입 용아래에선 각 원칙을 정의 → 장·단점 → 대표 위반/준수 코드 순서로 살펴본다.2. 단일 책임 원칙 (SRP)“클래스(또는 모듈)는 오직 하나의 변경 이유만 가져야 한다.”운영체제에서 PCB·TCB를 분리해 부담을 줄이듯,소프트웨어도 변경 요인을 분리해 부담을 줄인다.왜 ..
[Network] Connection Timeout, Socket Timeout, Read Timeout의 차이
·
Computer Science/Network
백엔드 개발을 하다 보면 외부 API를 호출하거나 서버 간 통신을 할 때 “타임아웃(timeout)”이라는 단어를 자주 접하게 된다.그런데 이 timeout에도 여러 종류가 있다.오늘은 가장 혼동되기 쉬운 세 가지 Timeout을 알아보자.Connection TimeoutSocket TimeoutRead Timeout타임아웃(Timeout)이란?네트워크 타임아웃은 서버로 요청을 보냈을 때, 일정 시간 내에 응답을 받지 못하면 발생하는 현상이다.이는 실패로 간주되어 연결을 끊거나 요청을 재전송하는 계기가 된다.타임아웃을 설정하지 않으면, 클라이언트는 무한히 기다릴 수 있기 때문에 리소스 고갈과 장애로 이어질 수 있다.타임아웃 기본값 (Java)Java의 HttpURLConnection은 기본적으로 conn..
[OS] 프로세스 VS 스레드 (Context Switching)
·
Computer Science/Operating System
컨텍스트 스위칭이란?운영체제에서 CPU는 동시에 여러 작업을 처리하는 것처럼 보이게 하기 위해, 아주 짧은 시간 단위로 작업을 바꿔가며 실행한다.이때 작업을 바꾸는 과정을 컨텍스트 스위칭(Context Switching) 이라고 부른다.작업 단위가 프로세스일 수도 있고작업 단위가 스레드일 수도 있다그럼 어떤 경우가 더 빠를까?바로 스레드 간의 컨텍스트 스위칭이 프로세스 간의 컨텍스트 스위칭보다 훨씬 빠르다.프로세스 vs 스레드, 뭐가 다를까?항목프로세스스레드정의실행 중인 프로그램프로세스 내 작업 흐름자원각각 독립된 메모리 주소 사용같은 프로세스 내 자원 공유컨텍스트 정보PCB (Process Control Block)TCB (Thread Control Block)핵심 차이점은 자원을 공유하는가, 아닌가이..
[Network] 리버스 프록시 vs 포워드 프록시
·
Computer Science/Network
프록시(Proxy)란?프록시(Proxy)는 클라이언트와 서버 사이에 위치해서 요청과 응답을 중계해주는 역할을 한다.즉, 사용자가 직접 서버와 통신하는 게 아니라 프록시를 통해 간접적으로 통신하는 구조다.프록시를 사용하는 이유는 여러 가지가 있다.대표적으로는 보안 강화, 성능 향상, 통신 비용 절감이 있고,프록시가 위치하는 곳에 따라 포워드 프록시와 리버스 프록시로 나뉜다.포워드 프록시 (Forward Proxy)클라이언트 ↔ 프록시 ↔ 서버클라이언트와 인터넷 사이에 위치하는 프록시다.클라이언트가 직접 인터넷에 접근하지 않고, 프록시 서버를 통해 요청을 보내게 된다.캐싱포워드 프록시는 자주 요청되는 파일들을 캐싱해서원 서버에 요청하지 않고도 빠르게 응답을 줄 수 있다.예를 들어, HTML, JS, CSS,..
[OS] CPU 스케줄링 알고리즘
·
Computer Science/Operating System
운영체제에서 CPU는 한 번에 하나의 작업만 처리할 수 있기 때문에,동시에 여러 프로세스가 실행 준비 상태에 있다면 어떤 프로세스를 먼저 실행할지 결정하는 정책이 필요하다. 이때 어떤 기준으로 CPU를 할당할지는 CPU 스케줄링 알고리즘에 따라 달라진다.CPU 스케줄러란?CPU 스케줄러는 실행 준비 상태(Ready state)에 있는 여러 프로세스 중에서 CPU를 다음에 할당할 프로세스를 결정하는 운영체제의 핵심 컴포넌트다. 이 스케줄링 과정은 일반적으로 다음과 같은 시점에 발생한다:현재 실행 중인 프로세스가 종료될 때현재 프로세스가 I/O 작업 등으로 CPU를 반납할 때인터럽트 발생 등으로 CPU가 다른 작업을 처리해야 할 때우선순위가 더 높은 프로세스가 ready 상태로 진입했을 때 (선점형 스케줄러..
[Network] HTTP, HTTPS란?
·
Computer Science/Network
HTTP/1.0하나의 연결당 하나의 요청만 처리할 수 있는 구조.서버로부터 파일을 가져올 때마다 TCP의 3-way handshake가 반복되어야 하므로, RTT(Round Trip Time)가 증가함.RTT : 패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리는 시간(패킷 왕복시간).문제점: 서버 부담 증가, 사용자 응답시간 지연.이러한 한계를 극복하기 위해 HTTP 자체를 개선하기도 했지만,동시에 다음과 같은 웹 최적화 기법들도 사용되었다:이미지 스프라이트코드 압축이미지 Base64 인코딩이미지 스프라이트다수의 이미지를 하나로 합쳐서 다운로드 요청 횟수를 줄이는 기법.이후 background-image의 position 속성을 이용해 해당 위치의 이미지를 보여줌.많은 개별 이미지를 동시에..