OS
-
[OS] 뮤텍스(Mutex) vs 세마포어(Semaphore)OS 2021. 11. 19. 18:36
뮤텍스(Mutex)와 세마포어(Semaphore) 안녕하세요? 장장스입니다. 오늘은 기술면접에서 물어본다고 하는(?) 뮤텍스와 세마포어에 대해 정리하겠습니다. 언제 등장해? 교착상태(deadlock)에 대해 들어보셨다면 이 글을 읽을 준비가 되신겁니다. 교착상태는 제한된 자원을 두고 프로세스나 스레드가 작업을 하지 않고 무한 대기에 빠지게 되는 것을 말합니다. 교착상태가 발생하기 위해서 다음과 같은 4가지 조건이 필요합니다. 상호 배제 점유 대기 비선점 순환 대기 이 중 상호 배제 조건을 해결하기 위한 방법이 뮤텍스(Mutex)와 세마포어(Semaphore)입니다. 뮤텍스(Mutex) 뮤텍스는 mutual과 exclusion의 합성어로, 여러 스레드를 실행하는 환경에서 자원에 대한 접근에 제한을 강제하기..
-
[OS] 데드락 (Deadlock) - 교착상태OS 2021. 8. 16. 15:59
데드락 (Deadlock) Deadlock (교착상태) 란? 프로세스나 스레드가 결코 일어날 수 없는 특정 이벤트를 무한정 기다리는 상태를 말한다. 👌 데드락의 발생조건 4가지 데드락에 걸리기 위해서는 4가지 요건이 필요합니다. 1. 상호 배제 조건 (Mutual exclusion condition) 프로세스는 한번에 하나의 자원만 사용 할 수 있다. 사용 중인자원을 다른 프로세스가 사용하기 위해서는 사용중인 자원이 해제될 때까지 기다려야 한다. 2. 점유와 대기 조건 (hold-and-wait condition) 자원을 최소한 하나 보유하고 다른 프로세스에 할당되어 사용중인 자원을점유하기 위해 기다려야 한다. 3. 비선점 조건(nopreemption condition) 이미 할당되어 사용중인 자원을..
-
[OS] Race Condition 경쟁상태란?OS 2021. 8. 15. 16:46
(Race Condition) 경쟁상태란? Race Condition? Race Condition이란 두 개 이상의 cocurrent한 프로세스(혹은 스레드)들이 하나의 자원(리소스)에 접근하기 위해 경쟁하는 상태를 말합니다. Critical Section(임계영역) 통장에 돈이 100만원 있습니다. 지난달에 친구에게 빌렸던 50만원을 갚으려고 이체를 하고 있었습니다. 계좌번호와 금액을 입력하고 송금 버튼을 눌렀습니다. 그런데, 오늘 마침 카드값 70만원이 빠져나가는 날입니다. 정말정말 우연히 저의 이체와 카드값 이체가 동시에 일어났습니다. 그런데 두 이체가 통장에 있는 잔액을 확인 했을 때 100만원으로 이체들이 모두 성공해 버렸습니다. 은행에 비상이 걸렸습니다! 이런 일이 계속 반복된다면 은행은 곧 ..
-
[OS] 프로그램 VS 프로세스 VS 스레드OS 2021. 7. 21. 23:53
프로그램 VS 프로세스 VS 스레드 안녕하세요? 장장스입니다. 오늘은 헷갈리는 개념인 프로그램, 프로세스, 스레드에 대해서 정리해 보겠습니다아! 프로그램, 프로세스, 스레드 프로그래밍을 하다보면 계속해서 나오는 프로그램, 프로세스, 스레드가 무엇인지 간단하게 짚고 넘어가겠습니다!. 프로그램(Program)? 프로그램은 어떤 작업을 위해 운영체제 위에서 실행할 수 있는 파일을 말합니다. 윈도우에서는 보통 .exe 파일이 프로그램입니다. 예를 들면 엑셀, 웹 브라우저(크롬, 엣지, 웨일 등), 카카오톡 등이 있습니다. 프로세스(Process)? 운영 체제 위에서 실행중인 프로그램으로 프로그램 명령어와 데이터들이 메모리에 올라가고 실행 중 또는 실행 대기중인 상태 잠깐, 그러면 프로세서(Processor)는 ..
-
[OS] 프로세스 관리, 프로세스 문맥(context)OS 2021. 7. 20. 23:41
프로세스 관리, 프로세스 문맥(context) 프로세스의 개념 프로그램? 프로세스? 스레드? 프로그래밍을 공부하다보면 자주 들어보는 말이다. 프로세스는 무엇인가? Process is a Programin execution 실행중인 프로그램 을 프로세스라 한다. 프로세스의 문맥(context) 프로세스 context는 프로세스가 현재 어떤 상태에서 수행되고 있는지 정확히 규명하기 위해 필요한 정보를 말한다. 현대의 운영체제는 여러 프로세스가 함께 수행되는 시분할 시스템 환경입니다. 시분할 시스템 환경에서는 타이머 인터럽트에 의해 짧은 시간동안 CPU를 점유하고 다른 프로세스에게 넘겨주고 다시 차례가 되면 CPU를 점유하여 명령을 수행합니다. 다시 명령을 수행하기 위해서 이전에 어디까지 명령을 수행했는지 정..
-
[OS] 프로세스 메모리 구조 (코드, 데이터, 스텍, 힙)OS 2021. 7. 19. 07:57
프로세스 메모리 구조 (코드, 데이터, 스텍, 힙) 프로그램의 실행 프로그램의 실행은 두가지 중요한 의미를 가진다. 파일 시스템에 존재하던 실행파일이 메모리에 적재된다는 의미 프로그램이 CPU를 할당받고 명령을 수행하고 있는 상태 파일 시스템에 있는 실행 파일이 메모리에 적재될 때, 실행파일 전체가 메모리에 올라가지 않는다. 일부분만 메모리에 올라가고 나머지는 디스크의 특정영역인 스왑 영역에 존재한다. 프로세스 메모리 영역 프로세스의 주소 공간은 코드(code), 데이터(data), 스택(stack), 힙(heap) 영역으로 구성된다. 이러한 주소 공간을 우리는 가상 메모리 (또는 논리적 메모리: logical memory)라고 부른다. code 영역 사용자가 작성한 프로그램 함수들의 코드가 CPU에서 ..
-
[OS] 인터럽트(Interrupt)OS 2021. 7. 18. 20:02
인터럽트(Interrupt) 인터럽트(Interrupt) 인터럽트란? 마이크로프로세서(CPU)가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치에 예외상황이 발생하여 처리가 필요할 경우에 마이크로프로세서에게 알려 처리할 수 있도록 하는 것을 말한다. 현대의 운영체제는 인터럽트에 의해 구동된다고 할 수 있다. 인터럽트 당한 시점의 레지스터와 PC(Program Counter)를 저장한 후 CPU의 제어를 인터럽트 처리 루틴에 넘긴다. 넓은 의미의 interrupt 인터럽트는 크게 하드웨어 인터럽트와 소프트웨어 인터럽트로 나눌 수 있다. 하드웨어 인터럽트는 키보드 마우스와 같은 하드웨어가 발생시킨 인터럽트를 말한다. 소프트웨어 인터럽트는 프로그램이 오류를 범하여 Exception이 발생하거나 사용자..
-
[OS] 컴퓨터 시스템의 동작 원리OS 2021. 7. 17. 16:44
컴퓨터 시스템의 동작 원리 컴퓨터 시스템 구조 1. CPU 중앙처리장치라 불리는 CPU는 인간의 두뇌와 같은 역할을 합니다. 중앙처리장치(central processing unit) 라는 말 그대로 중앙에서 사용자가 입력한 명령어를 해석하고 연산한 후 그 결과를 알려준다. 2. 메모리 랜덤 액세스 메모리(Random Access Memory) 즉, 램(RAM)은 임의의 영역에 접근하여 읽고 쓰기가 가능한 주기억 장치다. RAM은 어느 위치에 저장된 데이터든지 접근(읽기 및 쓰기)하는 데 동일한 시간이 걸리는 메모리이기에 ‘랜덤(Random, 무작위)’이라는 명칭이 주어진다. 3. Device Controller I/O device controller 해당 I/O 장치 유형을 관리하는 일종의 작은 CPU ..
-
[OS] 운영체제OS 2021. 7. 15. 23:49
운영체제란? 운영체제의 정의 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층을 말합니다. 운영체제의 기능 1. 자원을 효율적으로 관리 ▷ 효율성: 효율적이나 일부가 지나치게 희생되지 않도록 ▷ 형평성: 프로그램들 간의 자원을 형평성 있게 분배 ▷ 보안 및 보호 2. 사용자 및 운영체제 자신의 보호 3. 프로세스, 파일, 메시지 등을 관리 4. 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공 운영체제의 분류 동시 작업 가능 여부에 따라 분류 ▷ 단일작업(single tasking) ▷ 다중작업(multi tasking) ✓pick 사용자 수에 따른 분류 ▷ 단일 사용자 ▷ 다중 사용자 ✓pick 처리방식 ▷ 일괄처리 방식(batch processing..