본문 바로가기

운영체제(OS)

(6)
/dev/null 2>&1 shell(#mode)에서 간단하게 명령어를 통해 테스트를 진행하면서 "/dev/null 2>&1"의 의미를 알아봅니다. 아래 명령어는 표준 출력을 /dev/null로 redirection 하라는 의미로 표준출력을 버리라는 의미입니다. $ rm test > /dev/null 하지만, test라는 file이 존재하지 않는 경우 아래와 같은 표준에러가 출력됩니다. $ rm test > /dev/null rm: cannot remove 'test': No such file or directory 방금 언급했지만, 이것은 "표준출력"이 아닌 "표준에러"이기 때문에 화면에 출력이 된것입니다. 다시 강조하면 위에 예제는 /dev/null 로 redirection 을 통해 화면 출력을 하지 않는것은 표준출력에 한해서..
2. 멀티 쓰레드 프로그래밍 멀티쓰레드 프로그래밍 자바에서 제공하는 멀티쓰레드 프로그래밍에 대해 공부해보자 📖 Thread 클래스와 Runnable 인터페이스 쓰레드의 상태 쓰레드의 우선순위 Main 쓰레드 동기화 데드락 지난 9주차 과제 회고 ✍️ Exception을 계속 throw 하다보면 결국 main 메소드에서 처리를 해야 하는데, 여기서도 던지면 jvm이 어떤 방식으로 throw를 처리하는지에 대한 질문이였다. 간단하게 정리하자면, 해당 쓰레드는 예외를 던지고 종료가 된다. 하필 이번주 스터디 주제가 멀티쓰레드 프로그래밍이기 때문인진 몰라도 저 의미가 너무나도 궁금했다. 🤔 TMI : 이번에 작성한 예제는 필자가 맥날 알바생이기 때문에 관련 예제가 햄버거와 관련되어있습니다.. 프로세스(Process) 📌 실행중인 프로그램을..
1. 프로세스 vs 쓰레드 CS 첫 포스팅으로는 프로세스와 스레드의 차이에 대해 설명하는 글을 쓰기로 결정했다. 프로세스와 스레드, 그리고 프로그램이 작동하는 방식에 대해서 잘 이해하고 있는지 확인하기 위해 기술면접에서 단골 질문 사항으로 나온다고 하고, 이 부분이 운영체제 과목에서도 기본으로 다루고 갈 정도로 중요하기 때문이다. 따라서 이번 글에서는 프로세스와 스레드의 차이에 대한 글뿐만 아니라, 프로그램/프로세스/스레드 모두에 대한 기초적인 설명을 쓰게 될 것 같다. 프로세스와 스레드에 대한 정의 먼저 프로세스와 스레드가 무엇인지 정의부터 살펴보고 가자. 프로세스: 운영체제로부터 자원을 할당받은 작업의 단위. 스레드: 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위. 일단 운영체제에 대해 기본 배경 지식이 없다면 정의만 ..
동기화 처리 및 데드락 Process Synchronization 협력하는 프로세스들 사이에서 실행 순서 규칙을 정하여 공유된 자원의 일관성 (consistency)을 보장하는 것 하나의 프로세스가 공유된 자원에 접근하고 난 뒤에 다른 프로세스가 쓰도록 만들어주어야 함 Critical Section (Shared Resource) nn개의 프로세스들이 있을 때, 이 프로세스들은 공유된 자원을 사용하기 위해 경쟁한다 (race condition). 각각의 프로세스에는 “code segment”라는 것이 있는데 일반적으로 “Critical Section (CS)”이라고 불린다. CS을 통해 공유된 자원에 접근할 수 있다. CS resource that “allows only one user at a time”. 위의 문장과 같이 ..
CPU 스케쥴링 1. CPU 스케쥴링 1.1 CPU 스케쥴러 준비 상태에 있는 프로세스들 중 어떠한 프로세스에게 CPU를 할당할지 결정하는 운영체제의 코드 - 실행 상태에 있던 프로세스가 I/O 요청 등에 의해 봉쇄 상태로 바뀌는 경우 - 실행 상태에 있던 프로세스가 타이머 인터럽트 발생에 의해 준비 상태로 바뀌는 경우 - I/O 요청으로 봉쇄 상태에 있던 프로세스의 I/O 작업이 완료되어 인터럽트가 발생되고 그 결과로 프로세스의 상태가 준비 상태로 바뀌는 경우 - CPU에서 실행 상태에 있는 프로세스가 종료되는 경우 - 선점형 방식, 비선점형 방식이 존재 1.2 디스패처 새롭게 선택된 프로세스가 CPU를 할당받고 작업을 수행할 수 있도록 환경설정을 하는 운영체제의 코드 기존의 실행중이던 프로세스의 문맥을 PCB에 이양..
프로세스 구조 및 관리 기법 1. 프로세스 관리 1.1 프로세스의 개념 메모리에 올라가 실행 중인 프로그램 일반적으로 잡(JOB)이라는 용어와 혼동해서 사용 시분할 시스템 환경에서는 문맥 교환(context switch)을 위한 PCB를 가지는 객체 1.2 프로세스의 상태 프로세스는 실행, 준비, 봉쇄의 세가지로 구분된다. 실행 상태 : 프로세스가 CPU를 보유하고, 기계어 명령을 실행하고 있는 상태. 준비 상태 : 프로세스가 CPU만 보유하면 당장 명령을 실행할수 있지만 CPU를 할당받지 못한 상태. 봉쇄 상태 : CPU를 할당받더라도 당장 명령을 실행할 수 없는 프로세스의 상태. 1.3 프로세스 제어블록(PCB) 프로세스 관리를 위해 프로세스 정보를 담은 커널내의 자료구조 프로세스의 상태, 프로그램 카운터 값, CPU 레저스터값..