전체 글 19

물리 메모리 / 가상 메모리

물리 메모리- 물리 메모리는 컴퓨터 시스템에 실제로 존재하는 메모리이다. 이는 램(RAM)이라고도 불리며, CPU가 직접 접근할 수 있는 메모리 공간을 의미한다.- 물리 메모리는 컴퓨터의 모든 작업을 수행하는데 필수적인 요소로, 프로그램이 실행될 때 필요한 데이터와 명령어를 저장하고 이를 CPU가 빠르게 접근할 수 있도록 한다.- 물리 메모리는 제한된 용량을 가지고 있어, 실행중인 프로세스들이 요구하는 메모리 크기보다 작을 수 있다. 가상 메모리- 가상 메모리는 물리 메모리의 한계를 극복하기 위해 사용되는 개념이다.- 운영체제에서 제공하는 기능으로, 실제 물리 메모리보다 더 큰 메모리 공간을 사용하는 것처럼 보이게 한다.- 가상메모리는 물리 메모리와 디스크 저장공간의 조합으로 구성되며, 프로그램이 필요로..

운영체제 2024.10.05

Docker & 가상화

도커란 ? 애플리케이션을 패키징할 수 있는 툴, 컨테이너라고 불리는 하나의 작은 소프트웨어 유닛 안에 어플리케이션과 그에 필요한 시스템 툴,  환경설정, 모든 Dependencies를 하나로 묶어서 다른 서버, 다른 pc 그 어떤 곳에도 쉽게 배포하고 안정적으로 구동할 수 있게 도와주는 툴 ->어플리케이션이 구동하는데 필요한 모든 것들을 도커 컨테이너에 담아놨다고 볼 수 있다. VM vs 컨테이너(도커)  VM는 하드웨어 Infrastructure 위에 vmware나 VirtualBox와 같은 이런 Hypervisor 소프트웨어를  이용해서 각각의 가상의 머신을 만들 수 있다. 한 운영체제 위에서 동일한 어플리케이션을 각각의  고립된 다른 환경에서 구동하기 위해서는 이 VM을 이용해서 어플리케이션을 구동..

운영체제 2024.09.13

Sync/Async & Blocking/Non-Blocking

Synchronous : 요청이 들어온 순서에 맞게 하나씩 처리하는 것Asynchronous : 하나의 요청이 끝나기 전에, 다른 요청을 동시에 처리할 수 있는 것Blocking : 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작하는 것NonBlocking : 다른 추제의 작업에 관련없이 자신의 작업을 하는 것 동기(Synchronous), 비동기(Asynchronous)둘의 차이는 한 작업이 다른 작업을 호출하는 경우, 호출되는 것의 작업 완료 여부를 누가 신경쓰는 지에 따라 나뉜다.  Synchronous는 호출하는 함수가 작업 완료 여부를 확인한다. Synchronous의 뜻은 '동시 발생하는'으로 컴퓨터 공학에서 동기는 현재 작업의 응답..

운영체제 2024.09.01

상호 배제 / 동기화 (Mutex, Semaphore, Monitor)

동기화(synchronization)를 위한 상호 배제(Mutual Exclusion) 앞서 얘기했듯 공유자원에 대해 다수의 프로세스 혹은 스레드가 접근할 때 경쟁조건이 발생하여 의도하지 않은 동작이 발생할 수 있다. 따라서 프로세스나 스레드를 동기화 해야한다. 이때, 동기화란 공유자원에 동시에 접근하지 못하도록 접근 순서를 제어하는 방법을 의미한다.프로세스/스레드 간 동기화는 일반적으로 상호배제를 통해 구현할 수 있다. 상호배제(Mutual Exclusion)란? 동시 프로그래밍에서 공유 불가능한 자원의 동시 사용을 피하기 위해 사용되는 알고리즘으로, 임계구역으로 불리는 코드 영역에 의해 구현된다. 하나의 프로세스가 순차적으로 파일을 읽는 작업을 하는 도중에 다른 프로세스가 파일의 내용을 변경해 버리면..

운영체제 2024.09.01

교착상태 / 기아상태

교착상태 (Deadlock)운영체제에서 교착상태란, 시스템 자원에 대한 요구가 뒤엉킨 상태이다.즉, 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황을 말한다.프로세스는 자원 요청->자원사용->자원해제 순서로 동작한다. 사실 초기에 일괄 처리 시스템에서는 교착상태가 자주 발생하지 않았지만, 시스템 효율성을 증가시키고 제한된 자원의 사용률을 높이기 위해 사용하는 병행 처리 기술과 자원 공유 기술의 부작용으로 교착상태가 자주 발생하게 된 것이다.  교착상태의 발생조건1. 상호 배제 -  한 번에 프로세스 하나만 해당 자원을 사용할 수 있다. 사용 중인 자원을 다른 프로세스가 사용하려면 요청한 자원이 해제될 때까지 기다려야 한다.2. 점유와 대기 - 자원을 최..

운영체제 2024.08.17

경쟁상태(Race Condition)

경쟁상태(Race Condition)란?- 두 개 이상의 프로세스가 공통 자원을 병행적으로(concurrently) 읽거나 쓰는 동작을 할 때, 공용 데이터에 대한 접근이 어떤 순서에 따라 이루어 졌는지에 따라 그 실행 결과가 달라지는 상황을 말한다. Race의 뜻 그대로, 간단히 말하면 경쟁하는 상태, 즉 두 개의 스레드가 하나의 자원을 놓고 서로 사용하려고 경쟁하는 상황을 말한다.  경쟁상태가 발생하는 경우커널 작업을 수행하는 중에 인터럽트 발생문제점 : 커널모드에서 데이터를 로드하여 작업을 수행하다가 인터럽트가 발생하여 같은 데이터를 조작하는 경우해결법 : 커널모드에서 작업을 수행하는 동안, 인터럽트를 disable시켜 CPU제어권을 가져가지 못하도록 한다.프로세스가 'System call'을 하여..

운영체제 2024.08.17

프로세스(Process) vs 스레드(Thread)

프로그램(Program)이란- 사전적 의미 : 어떤 작업을 위해 실행할 수 있는 파일- 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태 프로세스(Process)란- 사전적 의미 : 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램메모리에 올라와 실행되고 있는 프로그램의 인스턴스 ( 독립적인 개체 )운영체제로부터 시스템 자원을 할당받는 작업의 단위 즉, 동적인 개념으로는 실행된 프로그램을 의미한다. - 할당핟는 시스템 자원의 예   : CPU시간, 운영에 필요한 주소공간, Code, Data, Stack, Heap의 구조로 된 독립된 메모리 영역프로세스 특징프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다.Code 영역 : 프..

운영체제 2024.08.16

게이트웨이 / 방화벽

게이트웨이란?다른 네트워크로 나가거나 다른 네트워크에서 들어오도록 하기 위해 꼭 필요한 통신 기기(로컬 호스트 중 하나)의 일부분이며, 통신 데이터가 다른 네트워크의 호스트와 통신하기 위해서 반드시 통과해야 하는 내부의 출입문이라 할 수 있다. 게이트웨이는 왜 필요할까?동일한 네트워크에 있는 소수의 호스트 컴퓨터 간에 통신은 대상 간에 직접 통신을 하면 되기 때문에 통신 경로가 아주 단순하다. 그냥 서로 통신하면 된다. 그러나 서로 다른 네트워크에 있는 다수의 호스트 컴퓨터들이 서로 통신을 할 경우에는, 대상 간의 직접 통신은 통신 경로가 아주 방대해지고 복잡해지기 때문에 비효율적이고 관리가 어렵다.  따라서 통신 경로를 단순화하고, 연결 회선을 효율적으로 관리하기 위해서 다수의 호스트들을 여러 그룹으로..

네트워크 2024.08.02

소켓(Socket)

소켓이란?소켓은 네트워크를 경유하는 프로세스 간 통신의 종착점이다. 전송 계층과 응용 계층 사이의 인터페이스 역할을 하며 떨어져 있는 두 호스트를 연결해준다.소켓의 본질은 파일로 장치 파일의 일종으로 이해할 수 있다. 때문에 일반 파일에 대한 개념이 대부분 적용된다.주어는 프로세스, 대상체는 소켓(file)로 open, create, close, delete, R, W, X가 가능하다.만약 해당 대상체 파일이 TCP스택에 대한 추상화된 인터페이스를 제공한다면,→ 파일이라 하지 않고 TCP소켓이라 한다. 소켓은 프로토콜, IP주소, port넘버로 정의된다. 소켓이 하는 일1. 소프트웨어와 소프트웨어를 연결     → 어떻게 연결? 프로토콜, IP주소, port넘버를 통해 찾고 연결2. 소프트웨어 간 데이터..

네트워크 2024.07.29

HTTPS란?

HTTPS란?HTTPS는 Hypertext Transfer Protocol Secure의 약자로 HTTP프로토콜의 보안이 강화된 버전이라고 할 수 있다. HTTPS는 HTTP가 직접 TCP와 통신하는 소켓 부분을 SSL(Secure Socket Layer) 또는 TLS(Transport Layer Security)라는 프로토콜로 대체해서 사용하는 것이다.  ( SSL/TLS는 HTTP와는 독립된 프로토콜이다. )SSL / TLS란?SSL은 직역하면 보안 소켓 레이어라는 뜻으로, 인터넷 상에서 데이터 전송 시에 안전하게 데이터가 오갈 수 있도록 도와주는 레이어다.  기본적으로 응용 계층의 경우 암호화 작업없이 전송된다. 때문에 HTTP를 쓰는 사이트에 접속할 때, 패킷을 잡아 응용 계층 관련 정보를 분석하..

네트워크 2024.07.29