해결된 질문
작성
·
118
·
수정됨
0
안녕하세요. 감자님.
강의 듣던 도중에 표현 상에서 어색한 부분(?)이 있는 것 같아 질문드립니다.
프로세스가 컨텍스트 스위칭으로 인해 시분할처리되면서 사용자 입장에서는 프로세스의 실행 순서를 예측하기가 어렵다. 따라서 연산 결과를 예측하기 힘들고 이를 동기화 문제라고 하셨는데
연산 결과
라기 보다는 공유 자원에 대한 접근 순서
라고 하는 편이 더 정확하지 않을까요?
연산 결과가 잘못된다는 것은 결국 프로세스 실행 순서가 잘못되어 해당 프로세스가 공유 자원에 접근할 순서가 아닌데 접근해서 처리되면서 그로 인해 예상했던 연산 결과값이 아니다 라고 생각을 합니다.
뭔가 디테일한 설명이 생략된 것 같아서 질문드립니다.
운영체제는 프로세스의 실행 순서를 관리 및 결정하지만, 실행 결과에는 관여하지 않는다. 즉, 큐에서 프로세스를 꺼내 CPU를 통해 처리를 하도록 하는 것이지, 결과는 운영체제 알 바가 아니다. 라고 생각하는데 맞을까요? 이 부분은 강의에 나온 게 아니라 제가 따로 생각해 본 부분입니다.
답변 2
0
안녕하세요 이지민님!
궁금증이 두 가지가 있으셔서 순서대로 설명드리겠습니다.
영상 초반부(0:26)에 "공유자원은 여러 프로세스가 공유하고 있기 때문에 각 프로세스의 접근 순서에 따라 결과가 달라질 수 있습니다"라고 먼저 설명합니다.
이후 게임 코드를 예시로 설명할 때(2:22) "결과가 이렇게 엉망으로 된 이유는 health라는 공유자원을 여러 프로세스가 동시에 사용했기 때문입니다"라고 다시 한 번 공유자원 접근 순서에 대한 언급이 있습니다.
지민님께서 말씀하신 "연산 결과가 잘못된다는 것은 결국 프로세스 실행 순서가 잘못되어 해당 프로세스가 공유 자원에 접근할 순서가 아닌데 접근해서 처리되면서 그로 인해 예상했던 연산 결과값이 아니다 라고 생각을 합니다." 라는 내용과 다르지 않는 설명이라고 생각합니다.
맞습니다. 운영체제는 프로세스의 실행 결과를 컨트롤 하지는 않습니다.
프로세스의 실행 결과는 프로세스의 코드와 데이터를 CPU가 직접 연산을 하면서 결과를 도출하는 것이기 때문입니다.
궁금증이 해결되셨나요?
0
안녕하세요, 인프런 AI 인턴입니다.
이지민님께서 공유 자원과 동기화 문제에 대해 질문을 주셨네요. 프로세스의 컨텍스트 스위칭과 관련된 동기화 문제는 운영체제에서 매우 중요한 주제입니다. 질문 주신 내용을 바탕으로 각각의 문제를 설명드릴게요.
프로세스 동기화와 공유 자원 접근
운영체제의 역할
참고할 수 있는 질문 링크를 먼저 소개드립니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
예제를 통해 쉽게 풀어진 정의를 제 나름대로 다시 써보려다 보니 애매하고 어색한 부분이 있어서 질문드렸습니다.
제 나름대로 강의에서 나온 용어에 대한 정의를 써봤는데 확인 부탁드립니다.
공유자원: 프로세스/쓰레드 간 통신을 할때 여러 프로세스/쓰레드가 공동으로 이용하는 자원 (메모리, 변수, 파일, 데이터 등...)
동기화 문제: 프로세스/쓰레드의 올바르지 못한 공유 자원 접근 순서로 인해 예상치 못한 결과가 발생하는 것
임계구역: 여러 프로세스/쓰레드가 동시에 사용하면 안되는 영역. 공유자원을 수정하는 코드 부분이며 한 번에 하나의 프로세스/쓰레드만 접근해야 하는 영역
경쟁 조건: 여러 프로세스/쓰레드가 동일한 공유자원을 동시에 접근하려고 경쟁할 때 발생하는 문제