본문 바로가기

OS5

교착상태?!!!?!?!?!?!?!?!!?!?!?!? 🧲🧲 교착상태란? 교착상태(Dead Lock)은 상호 배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상을 말합니다. 아래의 사진으로 교착상태의 예시를 들 수 있습니다. 위 사진을 보면 자동차(프로세스)들이 현재 위치한 길(자원)을 점유함과 동시에 다른 차가 사용하는 길을 사용하려고 대기하고 있지만 다른 길을 사용할 수 없으며 현재 길에서도 벗어나지 못하는 상태입니다. 식사하는 철학자 문제 교착상태와 관련하여 가장 유명한 식사하는 철학자 문제가 있습니다. 위 사진처럼 5명의 철학자가 원탁에 앉아서 식사를 합니다. 철학자들 사이에는 포크가 하나씩 놓여 있고, 철학자들은 다음의 과정을 통하여 식사를 합니다. 1... 2023. 9. 13.
CPU 스케줄링 (CPU Scheduling) 🎞🎞 CPU 스케줄링에 대해 알아보겠습니다. CPU 스케줄링 (CPU Scheduling) CPU 이용률을 극대화 하기 위하여 멀티프로그래밍 (multiprogramming)이 필요합니다. 하지만 만약 CPU core가 하나라면 한 번에 하나의 프로세스만 실행 가능할 것입니다. 이때 필요한 것이 CPU 스케줄링입니다. 즉, CPU 스케줄링은 언제 어떤 프로세스에 CPU를 할당할지 결정하는 작업이라 할 수 있습니다. CPU 스케줄러 (CPU Scheduler) CPU 스케줄러는 메모리에 있는 프로세스들 중 어떤 프로세스를 실행할지 선택하고 CPU를 할당해주는 역할을 합니다. CPU 스케줄러는 프로세스들이 아래와 같은 상황에 있을 때 스케줄링을 결정합니다. 실행(running) 상태에서 대기(waiting) 상태.. 2023. 9. 6.
프로세스와 스레드 ☜(゚ヮ゚☜) 오늘은 프로세스와 스레드, 그리고 멀티 프로세스와 멀티 스레에 대하여 알아보도록 하겠습니다!! 프로그램과 프로세스 프로그램 우리가 듣기에 '프로세스' 라는 명칭을 다소 낯설게 느껴질 수 있습니다. 그러나 '프로그램'은 우리에게 친숙하다고 생각합니다. 프로그램은 윈도우의 '.exe' 파일 같은 컴퓨터에서 실행할 수 있는 파일을 통칭합니다. 그러나 아직 파일을 실행하지 않은 상태이기 때문에 정적 프로그램 (Static Program) 을 줄여서 프로그램이라고 부른 것 입니다. 어떤 프로그램을 개발하기 위해선 프로그래밍 언어를 이용해 코드를 작성하여 완성됩니다. 즉, 프로그램은 그냥 코드 덩어리인 셈입니다. 프로세스 프로그램이 그냥 코드 덩어리라면, 프로세스는 프로그램을 실행 시켜 정적 프로그램이 동적으로 변.. 2023. 8. 4.
System Call 이란? 시스템콜을 알기전에, 전에 쓴 글처럼 운영체제는 커널 모드와 사용자 모드로 나뉘어 구동된다. 운영체제에서 프로그램이 구동되는데 있어 파일을 읽어 오거나, 파일을 쓰거나, 혹은 화면에 메시지를 출력할때 등, 많은 부분이 커널 모드를 사용한다. 사용자 모드의 프로그램이 커널 모드의 기능을 사용해야 할 때 운영체제에 요청을 보내야하는데, 그 요청이 바로 시스템 콜 (System Call) 이다. 시스템 콜은 사용자 모드의 프로그램이 커널 모드의 기능을 활용할 수 있도록 중간다리 역할을 수행한다. 사용자 모드의 포로그램은 시스템 콜을 호출하여 커널 모드의 기능을 요청하고, 운영체제 커널은 해당 요청을 처리한 후 결과를 사용자 모드에 반환한다. 이렇게 함으로써 운영체제는 보안과 안정성을 유지하며 필요한 기능을 제.. 2023. 7. 25.