전체 글 38

[Unity] MonoBehaviour의 생명 주기

MonoBehaviour란?MonoBehaviour 클래스는 기본적으로 모든 Unity 스크립트가 파생되는 기본 클래스이다. MonoBehaviour를 상속한 스크립트들에 대해 정해진 순서대로 콜백 메서드를 호출하는데, 이 호출 순서를 LifeCycle(생명주기)이라고 부른다.MonoBehaviour의 생명주기[초기화]Awake -> OnEnable -> Start[물리]FixedUpdate -> 물리 시뮬레이션 -> OnCollision/OnTrigger[게임로직]Update -> (코루틴) -> LateUpdate[렌더링]OnRenderObject -> OnGUI[해제]OnApplicationQuit -> OnDisable - > OnDestroy 초기화Awake - 프리팹이 인스턴스화된 직후에 호출..

[운영체제] 데드락(DeadLock)

데드락(교착 상태): 두 개 이상의 프로세스나 스레드가 서로 자원을 얻지 못해서 다음 처리를 하지 못하는 상태. 무한히 다음 자원을 기다리게 되는 상태 Process 1: 자원 1을 얻음. 자원 2를 기다림Process 2: 자원 2를 얻음. 자원 1을기다림*서로에게 필요한 자원을 받을 때까지 무한정으로 대기하게 되는 것* 데드락 발생 조건 4가지1. 상호배제 (Mutual exclusion) - 자원은 한번에 한 프로세스만 사용 가능2. 점유 대기 (Hold and Wait) - 최소한 하나의 자원을 점유하고 있으며 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스3. 비선점 (No Preemption) - 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 ..

CS/OS 2026.05.15

[운영체제] CPU 스케줄링

CPU 스케줄링: 준비 리스트에 대기 중인 스레드 중 하나를 선택하는 것 비선점 스케줄링1. 한 프로세스가 실행 상태에서 대기 상태가 될때 (I/O 발생)2. 프로세스가 종료될 때 선점 스케줄링1. 프로세스가 실행 상태에서 준비 완료 상태로 전환될 때 (인터럽트 발생)2. 프로세스가 대기 상태에서 준비 완료 상태로 전환될 때 (I/O 종료) 비선점: 일단 CPU에 한 프로세스가 할당되면 프로세스가 종료하던지, 또는 대기 상태로 전환해 CPU 발생할 때까지 점유선점: 시분할 시스템에서 타임 슬라이스가 소진되거나, 인터럽트나 시스템 호출 종료시 더 높은 프로세스가 발생되었을 때 강제로 CPU 회수하는 것 CPU 스케줄링의 기준CPU 활용률처리율공평성응답 시간대기 시간소요 시간시스템 정책 우선자원 활용률 스케..

CS/OS 2026.05.15

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

프로세스란?: 실행 중인 프로그램, 메모리에 올라와 실행되고 있는 프로그램의 인스턴스 프로세스의 메모리 구조Code: 사용자가 작성한 프로그램의 기계어 코드가 저장되는 공간.Data: 전역변수와 static 변수가 저장되는 공간. 프로그램이 시작시 할당, 종료시 소멸Heap: 런타임 중 동적으로 생성되는 객체들이 저장되는 공간. 주소상으로는 낮은 곳에서 높은 곳으로 할당Stack: 지역변수, 매개변수, 리턴 주소 등을 저장. 함수 호출 시마다 스택프레임이 쌓이며, 주소상으로는 높은 곳에서 낮은 쪽으로 할당.멀티프로세스: 독립적인 메모리 공간을 가진 여러 프로세스로 작업을 처리하는 방식 스레드란?프로세스 안에서 실행되는 흐름 단위로 프로세스마다 최소 1개의 스레드를 소유프로세스 내의 주소 공간, 자원 공유..

CS/OS 2026.05.14

[운영체제] 커널과 시스템 콜

운영체제란?: 컴퓨터 하드웨어와 사용자 사이에서 중개자 역할을 하는 시스템 소프트웨어.컴퓨터가 부팅되면 부트로더에 의해 메모리 적재되며, 시스템 자원을 효율적으로 관리하고, 사용자와 응용 프로그램에게 편리하고 안전한 실행 환경을 제공 운영체제의 주요 역할1. 자원 관리2. 메모리 관리3. 프로세스 관리4. 파일 시스템 및 디스크 관리5. 입출력 관리6. 사용자 인터페이스7. 네트워킹8. 오류 처리9. 시스템 보안 종류: 윈도우, macOS, Linux, UNIX 커널이란?: 프로세스 관리, 메모리 관리, 저장장치 같은 운영체제의 핵심 기능을 모아놓은 곳 커널 구조단일형 구조: 모든 운영체제서비스가 하나의 큰 커널 안에 통합되어 있는 구조 계층형 구조: 기능을 계층으로 나눈 구조마이크로 구조: 커널에는 최..

CS/OS 2026.05.14

[알고리즘] 우선순위 큐(Priority Queue)

우선순위 큐 (Priority Queue)일반 큐는 먼저 들어온 것이 먼저 나오는 FIFO우선순위 큐는 우선순위가 높은 것이 먼저 나오는 자료구조내부적으로 힙(Heap)으로 구현되어 삽입/삭제 모두 O(log N) Heap 구조완전 이진 트리 기반, 부모 - 자식 간 대소 관계가 항상 유지최소 힙의 루트는 항상 최솟값최대 힙의 루트는 항상 최댓값 동작 과정삽입 push (sift - up)1. 트리의 마지막에 원소 추가2. 부모와 비교하며 위로 올라감 삭제 pop (sift - down)1. 루트 제거2. 마지막 원소를 루트로 이동3. 자식과 비교하며 아래로 내려감 우선순위 큐 구현 코드https://www.acmicpc.net/problem/13975#include #include #include #i..

[알고리즘] 투 포인터, 슬라이딩 윈도우

투 포인터 (Two Pointers)배열 혹은 리스트에서 두개의 포인터를 이용하여 조건을 만족하는 구간을 탐색하는 알고리즘투 포인터는 선형 시간복잡도를 가짐 O(n) 투 포인터 동작 과정L - 왼쪽 포인터R - 오른쪽 포인터 1. 두 포인터를 배열 시작 위치에 설정2. 두 포인터 사이의 구간을 조사하고 조건을 확인3. 조건을 만족하는 경우 결과를 저장하고, 문제에 따라 종료하거나 포인터를 이동하여 탐색을 계속 진행4. 조건이 만족하지 못한 경우, L 혹은 R 포인터를 이동5. R이 배열 끝에 도달할 경우 종료 투 포인터 구현 코드https://www.acmicpc.net/problem/2461#include #include #include #include using namespace std;int mai..

[알고리즘] 이분 탐색 (Binary Search)

이분 탐색오름차순 또는 내림차순으로 정렬된 배열에 적용 가능한 탐색 기법이분 탐색을 사용하면 O(logN)의 시간 복잡도로 탐색 수행-> 탐색을 수행할 때마다 탐색 범위가 절반으로 줄어들기 때문 이분탐색 동작 과정left - 현재 탐색범위의 시작right - 혐재 탐색 범위의 끝mid - 탐색 범위의 중간 = (left + right) /2 1. mid 계산 2. mid 값과 목표값 비교 arr[mid] == target → 탐색 성공, 종료 arr[mid] arr[mid] > target → 목표가 왼쪽 절반에 있음, right = mid - 13. left > right가 되면 탐색 실패, 종료 이분 탐색 구현 코드https://school.programmers.co.kr/learn..