CS/OS 5

[OS] Semaphore(쎄마포어)

이번 블로그는 앞 주제와 이어집니다!@!https://sehseh.tistory.com/16 [OS] Critical Section Problem, 쓰레드간 협력하나의 일을 효율적으로 처리하기 위해서는 쓰레드간 협력이 필요하다. 이러한 협력을 보장하기 위해 서로 개별적인(automic)한 연산을 수행해야한다. 예를 들어 Producer-Consumer Problem을 살펴보자.sehseh.tistory.com 그럼 이제 쎄마포어 관점에서 Critical Section Problem을 확인해보자이전 블로그에서 다뤘던 Critical Section Problem은 둘 이상의 프로세스나 스레드가 공유 자원에 동시 접근할 때 발생하는 것을 방지하는 방법이다. 이 문제를 방지하여 개별적인 연산을 수행하는 것을 S..

CS/OS 2025.08.02

[OS] Critical Section Problem, 쓰레드간 협력

하나의 일을 효율적으로 처리하기 위해서는 쓰레드간 협력이 필요하다. 이러한 협력을 보장하기 위해 서로 개별적인(automic)한 연산을 수행해야한다. 예를 들어 Producer-Consumer Problem을 살펴보자. 한 쓰레드(A)는 cnt 변수를 하나 증가시키고 다른 한 쓰레드(B)는 cnt 변수를 하나 감소시켜야한다. 처음 목표는 A가 cnt를 하나 증가시키고 B가 하나를 감소하는거라 기존값과 같은 결과가 나와야하지만 A가 증가시키는 도중에 B가 cnt 변수를 읽어 하나를 감소시켜 덮어쓴다면 기존값보다 하나 더 작게 나오는 결과가 나온다. 이러한 상황을 동시성 문제, Race Condition(두 프로세스가 동시에 같은 변수를 조작해 결과가 예측 불가능하게 되는 상황)이라 한다. 이 문제를 방지하..

CS/OS 2025.07.05

[OS] NachOS 환경 설정

Oracle VM으로 Ubuntu 18을 사용하여 NachOS 환경을 설정해볼것이다 NachOS란?NachOS는 Berkeley에서 만들어진 교육용 OS다.교수님 말을 빌리자면 OS위의 OS로 어플처럼 돌게하면서 스케줄링, 세마포어 등 HW와 OS의 작용을 살펴보는 도구라 할 수 있다.NachOS는 OS부분과 Machine emulator로 나눌 수 있는데 OS부분은 threads, userprog, and filesys 폴더에 있는 코드들으로 세마포어, 스케줄링 등이 구현되어 있다. Machine emulator는 machine 폴더에 있는 코드로 MIPS, COU, 레지스터, 메모리, 타이머, 콘솔, disk drive, network 등이 구현되어있다. (이 부분은 수정하지 않는다!!) 환경설정 단..

CS/OS 2025.05.21

좀비가 되긴 싫었는데... 부모가 나를 버렸어

이번 포스팅의 주제는 프로세스입니다 목차1. 프로세스란?2. 프로세스의 생성과 상태 전이 3. 프로세스 간 통신 1. 프로세스란프로세스와 프로그램은 같은 것일까?결론부터 말하자면 아니다!! 프로세스는 실행중인 프로그램의 인스턴스 중 하나로 하나의 프로그램에 여러개의 프로세스를 running 시킬 수 있다. 쉽게 말하면 프로그램을 실행하면 프로세스가 된다 이때 프로세스는 하나일수도 있고 여러개가 될 수도 있다.또한 운영체제가 자원을 할당하고 관리하는 기본 단위로도 볼 수 있다프로그램이 실행되면 운영체제는 다음과 같은 자원을 프로세스에게 할당한다. (줄여서 TDBS라 한다)1. Text : 사용자가 작성한 프로그램 함수, code2. Data: 전역변수, 정적 변수(불변변수)3. BSS : 초기화되지 않은..

CS/OS 2025.04.30

운영체제란 무엇인가

운영체제의 필요성과 컴퓨터 시스템에 대하여.. 운영체제는 두가지 관점에서 볼 수 있다왜??사용자 프로그램과 하드웨어 사이에 위치하기 때문에 먼저 사용자 관점에서 보자면 그냥 하드웨어 위에 덩그러니 있는 것보다 시스템을 편리하게 사용할 수 있다. 운영체제가 알아서 효율성과 형평성까지 고려하면서 자원을 할당해주니 사용자는 각각 독자적 컴퓨터에서 내것만 실행하는 것같은 착각을 한다 또한 여러개의 프로그램을 돌려도 모두 동시에 돌아가는 것같은 착각을 한다 우리가 편한만큼 운영체제가 열심히 일하고 있는것..이렇게 복잡한 하드웨어 자원을 사용자나 개발자가 이해하기 쉬운 형태로 단순화하여 제공한다 이를 추상화라고 하는데 메모리에 어떻게 저장되는지는 몰라도 운영체제의 메모리 관리 덕분에 정해진 메모리보다 더 많은 ..

CS/OS 2025.04.30