728x90

Computer Science

    [운영체제] IPC(Inter Process Communication) - 프로세스 간 통신

    IPC(Inter Process Communication) 독립적인 메모리 공간을 갖는 프로세스 간의 통신 기법 한 프로세스가 다른 프로세스의 자원을 사용하기 위해 동시에 접근 가능한 메모리 즉, 프로세스들이 공유하는 메모리가 필요 커널 영역에서 IPC라는 내부 프로세스 간 통신 설비를 제공 1. 공유 메모리 (Shared Memory) 공유 메모리(Shared Memory)가 데이터 자체를 공유하도록 설비 프로세스가 공유 메모리 할당을 커널에 요청하면 커널은 해당 프로세스에 메모리 공간을 할당 모든 프로세스는 공유 메모리에 접근할 수 있음 Text와 Data 영역 사이 공유 메모리 포인팅 공간 (각 프로세스가 메모리 영역에 첨부되는 방식) 프로세스 간 Read, Write를 모두 필요로 할 때 사용 ..

    [운영체제] PCB와 문맥 교환(Context Switching)

    PCB (Process Control Block) 운영체제가 시스템 내의 프로세스들을 관리하기 위해 프로세스마다 유지해야하는 정보들을 담는 커널 내 자료구조 커널 주소 공간의 data 영역에 존재 프로세스의 메타 데이터들이 저장되는 곳 Process ID Process 상태 CPU Regiter 값 CPU 스케줄링 정보 메모리 사용/관리 정보 등등 Linked List 방식으로 관리 PCB 생성마다 PCB List Head에 주소값으로 연결 PCB가 필요한 이유 CPU에서는 프로세스의 상태에 따라 주기적으로 프로세스를 교체해주는 작업이 필요하다. 이를 문맥 교환(Context Switching)이라고 한다. 문맥 교환 시 현재 CPU 상에서 실행되고 있던 프로세스의 정보(문맥)을 자신의 PCB에 저장하고..

    [운영체제] 유저모드(User-Mode)와 커널모드(Kernel-Mode), 인터럽트(Interrupt)와 시스템콜(System Call)

    유저 모드(User-Mode)와 커널 모드(Kernel-Mode) 커널에서는 중요한 자원을 관리하기 때문에 사용자가 해당 자원에 쉽게 접근하지 못하도록 보호하기 위해 나뉨 시스템에 중요한 영향을 미치는 연산은 커널 모드에서만 실행되도록 함으로써 하드웨어 보안 유지 프로세스가 실행되는 동안 유저 모드와 커널 모드를 반복적으로 넘나듬 유저 애플리케이션은 시스템 서비스를 호출할 때 유저 모드에서 커널 모드로 전환 유저/사용자 모드 사용자가 접근할 수 있는 영역을 제한적으로 두고 프로그램의 자원에 함부로 접근하지 못하도록 하는 모드 하드웨어 직접 접근 불가능 코드 작성, 프로세스 실행 명령 등 실행 가능 유저 애플리케이션 코드가 실행 커널 모드 모든 시스템 메모리 등 하드웨어에 직접 접근 가능 모든 CPU 명령..

    [운영체제] 동기/비동기(Sync/Async), 블로킹/논블로킹(Blocking/Non-Blocking)

    동기/비동기? 블로킹/논블로킹? 동기와 비동기, 블로킹과 논블로킹의 개념은 유사하게 느껴질 수 있지만 서로 바로보는 관점을 달리하고 있다. 동기/비동기는 일을 처리하는 순서(시점)와 결과(처리)와 관련있는 개념으로 이전 작업 종료와 동시에 시작하면 동기, 그렇지 않으면 비동기로 구분한다. 블로킹/논블로킹은 제어권과 관련있는 개념으로 함수 호출 시 제어권이 넘어가면 블로킹, 그렇지 않고 자신의 할일을 지속하면 논블로킹으로 구분한다. 동기(Synchronous) 작업을 동시에 수행하거나 동시에 끝나거나 끝나는 동시에 시작함 요청 작업의 종료 시점과 나머지 작업 요청 시작 시점의 동시성 호출한 함수의 작업 완료 응답이 필요해 작업 완료 여부를 계속해서 묻거나 응답을 기다림 호출한 함수의 작업 완료 여부에 대해..

    [운영체제] 프로세스 메모리 구조 - Code, Data, Heap, Stack

    프로세스 메모리 구조 Code(Text) 사용자가 작성한 프로그램 코드가 저장되는 공간 수행할 수 있는 기계어 명령의 형태로 변환되어 저장 변경이 불가능한 Read-Only Data 전역 변수나 static 변수 등 프로그램이 사용하는 데이터를 저장하는 공간 전역 변수나 static 변수를 참조한 코드 부분은 컴파일이 완료되면 data 영역 내의 해당 주소값을 가리키도록 변경됨 전역 변수가 저장되는 공간은 Data 영역과 BSS 영역으로 나뉨 Data: 초기화 된 전역 변수 BSS: 초기화 되지 않은 전역 변수 컴파일 시 데이터가 저장되며 프로그램 종료 시 삭제됨 전역 변수의 값이 변경될 수 있으므로 Read-Write Heap 프로그래머가 필요할 때마다 사용할 수 있는 메모리 공간 동적으로 메모리를 할..

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

    프로세스(Process) 프로그램이 메모리로 올라와 운영체제로부터 CPU를 할당받고 실행되고 있는 상태 CPU 스케줄링의 대상이 되는 작업의 흐름을 지칭 하나의 프로그램(애플리케이션)은 하나 이상의 프로세스를 가짐 각 프로세스는 별도의 주소 공간에서 실행되고 프로세스끼리 지원을 공유하지 않기 때문에 다른 프로세스의 변수나 자료구조에 접근할 수 없음 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap)을 할당 받음 스레드(Thread) 프로세스 내에서 실행되는 흐름의 단위 하나의 프로세스는 하나 이상의 스레드를 가짐 각각의 스레드는 프로세스 내에서 Stack 영역만 따로 할당받고 Code, Data, Heap 영역은 서로 공유함 멀티프로세스(Multi-Process) 하나의 애플..

    [네트워크] DNS(도메인 네임 시스템) 구성요소, 동작방식

    DNS(Domain Name System) 도메인 이름을 실제 IP 주소로 변환하여 연결해주는 시스템 사용자로 하여금 도메인 이름을 통해 실제 네트워크 상에서 사용하는 IP로 접속할 수 있도록 함 DNS는 상위 기관과 하위 기관과 같은 계층 구조를 가지는 분산 데이터베이스 구조 상위 기관에서 인증된 기관에게 도메인 생성 및 IP 주소로 변경할 수 있는 권한 부여 3가지 구성 요소 도메인 네임 스페이스(Domain Name Space) DNS가 저장/관리하는 계층적 구조 최상위에 루트 DNS 서버가 존재하고 그 하위로 연결된 모든 노드가 연속해서 이어진 계층 구조로 이루어짐 네임 서버(Name Server, =DNS서버): 권한 있는 DNS 서버 문자로 이루어진 도메인 이름을 실제 네트워크 통신 시 사용되..

    [네트워크] SOP(Same Origin Policy)와 CORS(Cross-Origin Resource Sharing), CORS 오류 해결 방법

    SOP(Same Origin Policy) 같은 출처의 HTTP 요청만을 허락하는 정책 자원을 요청한 출처와 해당 요청에 응답하는 서버의 출처가 다를 경우 해당 자원을 사용하지 못하도록 제한 -> CORS 정책을 지켰을 시에만 예외적으로 허용 SOP 정책이 없을 시 노출된 소스코드를 통해 CSRF(Cross-Site Request Forgery)나 XSS(Cross-Site Scripting)와 같은 방법으로 공격자의 사용자 정보 탈취 위험이 있음 ※ 출처(Origin)란? 위와 같은 URL 구조에서 Protocol + Host + Port에 해당하는 부분을 뜻한다. 브라우저는 Protocol, Host, Port가 모두 같다면 같은 출처, 셋 중 하나라도 다르다면 다른 출처라고 판단한다. CORS(Cr..

728x90