CS 7

[CS/운영체제] 뮤텍스와 세마포어

하나의 CPU에서 여러 프로세스나 스레드가 동시 실행되는 환경에서는 공유 자원에 대한 동기 접근이 발생한다. 이러한 상황에서는 Race Condition과 같은 동시성 문제가 쉽게 발생하며, 시스템 오동작이나 데이터 불일치를 초래할 수 있다. 따라서 Critical Section(임계영역)에 대한 적절한 접근 제어는 필수적이며, 이를 위한 대표적인 기법이 바로 뮤텍스와 세마포어이다.뮤텍스(Mutext)Mutual Exclusiond -> Mutex 뮤텍스는 말 그대로 상호 배제(Mutual Exclusion)를 위한 동기화 원시(primitive)다. 공유 자원에 접근하려는 스레드는 반드시 락(lock)을 획득해야 하며, 락을 얻은 스레드만이 임계영역에 진입할 수 있다.락은 boolean 상태(locke..

CS/운영체제 2025.10.28

[CS/운영체제] CPU 스케줄링 알고리즘

일전에도 정리했었지만 우리의 CPU(중앙처리장치)는 프로세스를 하나씩 처리한다.동시에 처리하는 것 같아보이지만,실제로는 아주 빠른 속도로 특정 속도 별로 작업을 하기 때문에 동시에 일어나는 것처럼 보이는 것이다.그러면 이런 실행 순서에 대한 할당은 어떻게 결정하는 것인지 알아보자.CPU 스케줄링이란?CPU 스케줄링은 운영체제(OS) 의 핵심 기능 중 하나로,한정된 CPU 자원을 시스템 내의 여러 프로세스(또는 스레드) 들에게 공정하고 효율적으로 할당하는 정책 및 과정이다.이때 CPU 스케줄링은 실행 대기 중인 프로세스(준비 큐, Ready Queue) 중에서 다음에 어떤 프로세스에게 CPU를 할당할지를 결정한다. 목적앞서 언급했듯이 여러 프로세스들이 돌아가기 위해선 공정하고 효율적으로 할당하는 과정이 C..

CS/운영체제 2025.10.22

[CS/운영체제] 프로세스 관리와 통신

PCB(Process Control Block)우리의 CPU는 한 번에 하나의 프로세스만 실행할 수 있다.하지만 사용자 입장에서는 CPU가 매우 많은 데이터를 동시에 빠르게 처리하는 것처럼 보인다.이는 CPU가 매우 빠른 속도로 여러 프로세스를 번갈아가며 실행하기 때문이다.즉, CPU가 짧은 시간 단위로 프로세스를 전환하면서 처리하기 때문에, 결과적으로 동시에 여러 작업이 수행되는 것처럼 보이는 것이다. 그렇다면 이러한 CPU에서 프로세스의 우선순위나 자원 배분 등을 어떻게 관리할 수 있을까?이를 위해 필요한 것이 바로 PCB(Process Control Block) 이다.운영체제는 빠르게 번갈아 수행되는 프로세스들의 실행 순서를 관리하고, 각 프로세스에 CPU 및 기타 자원을 효율적으로 배분한다.이때 ..

CS/운영체제 2025.10.14

[CS/네트워크] 운영체제의 기초

우리의 컴퓨터 프로그램은 모두 하드웨어(HW) 기반 환경 위에서 실행된다. 하지만 하드웨어 자원은 한적되어있고,이를 직접 다루기에는 복잡하고 비효율적일 수 있다. 그렇다면 이 하드웨어 위에서 프로그램들이 원활하게 돌아가도록 돕는 존재는 무엇일까? 바로 운영체제(OS)이다.운영체제란?운영체제(Operating System, OS)는 컴퓨터 시스템의 핵심 소프트웨어(SW)로, 컴퓨터 하드웨어와 응용 프로그램 간의 상호작용을 관리하고 제어하는 역할을 한다. 운영체제의 주된 목적은 사용자와 하드에워 사이의 인터페이스를 제공하여,응용프로그램이 보다 효율적이고 안정적으로 실행될 수 있도록 지원하는 것이다. 또한 운영체제는 시스템 자원을 효율적으로 관리해,여러 응용 프로그램이 동시에 원활하게 동작할 수 있도록 보장한..

CS/운영체제 2025.10.01

[CS/네트워크] 동기(Synchronous)/비동기(ASynchronous) & 블로킹(Blocking)/논블로킹(Non-Blocking)

프로그래밍에서 어떤 분야건 간에,운영 환경에서 스레드의 점유율을 어떻게 관리하느냐는 서비스의 성능과 안정성에 매우 중요한 요소이기에,관리의 중요성을 알아야한다!이 때,처리의 효율을 높이기 위한 방식으로 우리는 가장 흔히 동기(Synchronous)와 비동기(Asynchronous) 방식이 등장한다..그렇다면 동기와 비동기는 무엇일까? 1. 동기(Synchronous)동기(Synchronous)란'Sync'에서 볼 수 있듯이,말 그대로 "동시에 일어나는 것"을 의미한다.메인 스레드는 요청한 작업이 완료될 때까지 해당 작업을 계속 점유해야한다.따라서 요청을 보낸 즉시! 결과가 반환 될 때까지 기다려야하며(대기),이 동안에는 다른 작업은 처리되지 않는다."요청과 그 결과가 동시에 일어난다는 약속이다"..

CS/Network 2025.09.26

[CS/네트워크] 인증과 인가 방식(로그인)

오늘은 인증과 인가에서 중요한 역할을 하는세션, 쿠키, 토큰에 대하여 정리해보자.저번 CS 주제에서 이미 한 번 다루었던 내용이지만,로그인 서비스와 연관지어 더 깊이있는 탐색을 해보려고 업로드한다.쿠키 방식 1-1. 쿠키 저장과 보안 설정가장 기본적인 인증 방식으로 사용되는 것이 Cookie이다.Cookie는 브라우저에서 보관하며,서버가 클라이언트에게 내려보낸 데이터를 요청 시마다 자동으로 다시 서버에 전송한다.보안 강화를 위해 일반적으로 Cookie에 다음과 같은 설정들을 추가한다.Cookie cookie = new Cookie("token", "값");cookie.setHttpOnly(true);cookie.setSecure(true);이렇게 설정을 하면, JS와 같은 프론트 측에서 접근을 못한다.탈..

CS/Network 2025.09.26

[CS/네트워크] VPC와 Subnet(서브넷)

VPC(Virtual Private Cloud)란?VPC(Virtual Private Cloud)를 뜻하는 것으로,Virtual Private에 주목해보면 말 그대로 가상 사설 네트워크임을 알 수 있다.즉, 가상 네트워크 환경을 직접 구성해 그 안에 다양한 리소스를 배치하고 관리할 수 있는 서비스이다.이전의 포스트에서는 IP와 포트에 대하여 다뤘다면, 이제는 그 IP가 어떤 네트워크 환경에서 동작하는가?이걸 공부하기 위해 하는 것이 VPC 개념이다. 1-1. VPC 특징과 구성 요소VPC는 사설 네트워크(Private Network) 기반으로 네트워크 망을 구성하며, 내부에 여러 리소스를 탑재할 수 있는 서비스이다.대표적인 리소스는 다음과 같다.EC2 : 가상 서버(인스턴스)ELB : 로드 밸런서RDS..

CS/Network 2025.09.19