[운영체제] 인터럽트 & 시스템 콜(Interrupt, System Call)
·
운영체제
운영체제의 동작 과정 (Dual-Mode Execution) - 운영체제는 기본적으로 사용자에게 인터페이스를 제공하는 User Mode와 기기들을 직접 관리하는 Kernel Mode로 구분된다. User Mode : 일반적인 응용프로그램이 구동되는 환경이다. Kernel Mode : 커널이 구동되는 환경이며, 이 모드에서는 OS 시스템에 영향을 주는 명령어를 실행할 수 있다. - Kernel에서의 작업은 컴퓨터의 중요한 부분에 해당하는 작업이기에 사용자가 직접 작업하다가 문제가 생길 시 컴퓨터 전체에 영향을 끼치기 때문에 User Mode와 Kernel Mode로 나눠 사용자가 접근하지 못하게 한다. - 처음 운영체제가 구동되면 초기화 작업 및 부팅 과정에서 필요한 과정들을 수행하기 위해 커널 모드로 시..
[Pintos-Kaist] Project 1 - Threads 1주차 학습
·
운영체제
💡Pintos_8팀 WIL 일별 진행 목록 23.05.26(금) - github team repository 생성 - git clone 후 - AWS환경에서의 Ubuntu18.04 환경설정 23.05.27(토) - Alarm Clock🕰️ 구현 시작 - 목표 : 호출한 프로세스를 정해진 시간 이후에 다시 시작하는 커널 내부 함수 구현 - Busy waiting -> sleep, awake - 쓰레드 디스크립터 필드 추가(wakeup_tick) - 전역 변수 추가(next_tick_to_awake) - thread_init() 함수 수정 - timer_sleep() 함수 수정 23.05.29(월) - thread_sleep() 함수 구현 - timer_interrupt() 함수 수정 - thread_awa..
[백준] 15686 치킨 배달 [python]
·
알고리즘/백준
문제 풀이 1️⃣ 치킨집의 위치와 집의 위치를 미리 찾아서 리스트에 저장합니다. 2️⃣ 치킨집과의 최솟값을 찾아야하므로 변수를 max사이즈로 지정해줍니다. 3️⃣ M개수만큼의 치킨집을 골랐을 때 최솟값을 찾아야하므로 M개의 치킨집을 고르는 조합의 수를 구합니다. 4️⃣ 조합의 수를 구하기위해 브루트포스와 백트래킹 알고리즘을 사용합니다. 5️⃣ dfs 재귀를 반복하면서 조건에 충족됐을 때 집과 치킨집과의 거리를 저장합니다. 6️⃣ 저장한 치킨집과의 거리를 min함수로 저장해서 최솟값을 출력합니다. 전체 코드 from sys import stdin as s s=open('input.txt','rt') def dfs(cur,arr): global answer # arr의 길이가 M과 같으면 아래 조건문 진입 ..
[운영체제] 스핀락(Spinlock),뮤텍스(Mutex),세마포어(Semaphore)
·
운영체제
✔️ 동기화(Synchronization)란? - 여러 프로세스/스레드를 동시에 실행해도 공유 데이터의 일관성을 유지하는 것을 의미합니다. ✔️ 동기화의 목적 상호배제(Mutual Exclusion) 스레드 간의 순서 보장(Ordering) 효율적인 통신과 협력(Cooperation) - 일반적으로 뮤텍스, 세마포어, 조건 변수, 원자적 연산 등의 기법과 동기화 객체를 활용하여 스레드 간의 안전한 상호작용과 동기화된 실행을 달성할 수 있습니다. 이러한 동기화 메커니즘을 적절히 사용하여 스레드 동기화를 구현하면 경쟁 조건과 데드락(Deadlock), 스레드 간의 충돌 등의 문제를 예방하고 안정적인 다중 스레드 프로그래밍을 구현할 수 있습니다. ✔️ 임계 영역(Critical Section)이란? - 공유 ..
[운영체제] 동시성(Concurrency)과 병렬성(Parallelism)
·
운영체제
💡 동시성(Concurrency)이란? 동시성은 여러 작업이 동시에 실행되는 것 처럼 보이지만 실제로는 하나의 프로세스에서 여러 작업이 번갈아가면서 실행됩니다. 작업은 짧은 시간 동안 실행되고 중단되며, 다른 작업이 실행됩니다. 동시성은 작업을 빠르게 전환하여 여러 작업을 동시에 처리하는 것처럼 보이게 합니다. 이는 프로그래밍에서 비동기적인 작업이나 이벤트 기반 프로그래밍에서 주로 사용됩니다. 💡병렬성(Parallelism)이란? 병렬성은 여러 프로세서가 동시에 작업을 처리하며 여러 작업이 실제로 동시에 실행되는 개념입니다. 작업은 독립적으로 실행되며, 각각의 프로세서에서 병렬로 처리됩니다. 병렬성은 특히 대규모의 계산 작업이나 데이터 처리 작업에서 성능을 향상시키는 데 사용됩니다. 동시성 vs 병렬성 ..
[운영체제] 프로세스(Process)와 스레드(Thread)
·
운영체제
✔️ 프로세스란? 프로세스는 운영 체제에서 실행 중인 프로그램을 나타내는 단위입니다. 프로세스 내부에는 최소 하나의 스레드(thread)를 가지고 있는데, 실제로는 스레드(thread) 단위로 스케줄링을 한다. 각 프로세스는 독립된 메모리 공간을 할당받아 실행되며, 운영 체제는 프로세스를 생성, 제어, 종료하고 여러 프로세스 간의 상호작용을 관리합니다. 프로세스의 메모리 영역은 Code, Data, Heap, Stack 등을 가지고 있습니다. ✔️ 프로세스의 상태 실행(Running) : 현재 CPU에서 실행중인 상태입니다. 준비(Ready) : 실행 가능한 상태로, CPU를 할당받기 위해 대기 중인 상태입니다. 대기(Blocked, Waiting, Sleep) - 특정 이벤트 발생을 기다리는 상태로, ..
[백준] 1759 암호 만들기 [Python]
·
알고리즘/백준
풀이 방법 1️⃣ dfs를 통해서 문자를 백트래킹의 과정을 통해 구할 수 있는 모든 문자를 구합니다. 2️⃣ 문자들의 조합 중에서 모음이 최소한 한 개 이상 자음이 최소한 두 개이상이어야 하므로 만들어진 L크기의 문자를 확인합니다. 3️⃣ if문을 통해 정답으로 체크된 문자들이 모여있는 result 리스트를 출력형식에 맞게 출력합니다. 전체 코드 from sys import stdin as s s=open('input.txt','rt') L,C = map(int,s.readline().split()) arr=list(map(str,s.readline().split())) alpha=['a','e','i','o','u'] arr.sort() answer=[] result=[] def dfs(v, answe..
[TIL]23.05.19(금)
·
TIL
이번 주차는 7주 차로 벌써 C언어주차의 마지막 주입니다.  지난 주차 malloc-lab 구현은 개인적인 사정으로 인해 완벽하게 진행을 하지 못해서 아쉽지만 malloc-lab에서 사용한 개념들은 확실하게 정리하고 넘어가는 것이 좋을 것 같아서 정리 중이다... 며칠 빠졌다고 할게 많이 쌓여있는 느낌이지만 다시 열심히 해서 따라가면 되니까 너무 조급하게 생각하지 않아야겠다. 이번 주는 웹서버 만들기로 TCP/IP 등 나만의 웹서버 구현 및 프락시 서버 과제를 진행하는 주차이다. 주제만 생각해 봤을 때는 재미있을 것 같은데 한번 책과 과제내용들을 읽어보면서 부딪혀봐야겠다. 저번에는 못썼는데 저번주부터 협력사에서 1주일에 한 번씩 채용설명회를 해주는데 현재 인프랩과 팀스파르타에서 나와서 설명해 주셨다.두 ..
yunchan^.^
유릉이의 개발 블로그