운영체제 용어 정리

mjdevv·2023년 11월 22일
0

운영체제

목록 보기
1/12

1.동시성(Concurrency)

여러 일(tasks)을 동시에 하는 것.

서로 독립적으로 처리될 수 있는 여러 일(task)이 있다고 가정하자. 해당 task들은 서로 독립적이므로(처리함에 있어 서로 영향을 받지 않으므로) 동시에 개별적으로 처리가 가능하다.

이제 스레드 관점에서 동시성 개념을 생각해보자. 대부분의 경우 프로그램은 어떤 문제를 절차적으로 해결하기 위해 존재한다. 해당 문제가 독립적인 subtask들로 분해가 가능하다면, 각각의 독립적인 subtask들은 동시에 처리 가능하다. 따라서, 동시성은 우리가 프로그래밍으로 해결하고자 하는 문제 자체의 성질이라고 볼 수 있을 것 같다.

다만, 실제로는 동시적으로 처리가능한 부분과, 그렇지 못 한 부분들로 이루어지지게 된다. 그리고 해당 문제에서 동시적으로 처리할 수 없는 부분에 한해서는 race condition이라든지 하는 동시성 문제(동시성을 만족하지 않는 문제라고 볼 수 있을 듯)를 고려해야 한다.

또한, 동시성은 병렬성을 전제로 하지 않는다. 예를 들어, 싱글 코어 cpu는 time-sharing을 통해 동시성을 실현할 수 있다. 즉, 병렬 처리동시성을 가진 문제의 처리 방식이다.


2.병렬성(Parallelism)

같은 일(task)를 여러 사람이 동시에 하는 것

어떤 일(task)이 있고, 해당 task를 여러 사람이 동시에 달라 붙어 처리하는 걸 말한다. 여기서, 여러 사람이 동시에 달라 붙어 처리한다는 것 자체가 task의 부분적인 동시성을 전제로 한다. 예를 들어, 인형 눈알 붙이기의 경우, 인형 무더기에서 인형을 가져가는 subtask는 독립적으로 수행 가능하다. 하지만 인형 눈알을 붙이기 위한 바늘이라든가, 실이라든가 하는 자원은 공동으로 쓰는 것이고, 해당 자원이 없으면 대기를 해야 하는 수행 주체들 간의 영향도가 존재할 수 있다. 병렬성은 우리가 프로그래밍으로 해결하고자 하는 문제의 처리에 관한 성질이라고 볼 수 있다.

어떤 문제가 부분적으로 동시성을 지니고 있다면(subtask가 동시성을 지니고 있다면), 그 문제는 병렬적으로 처리 가능하다.


3.원자성(Atomicity)

쪼개어 나눌 수 없는 일(task)

어떤 일(task)의 단위라고 볼 수 있다. 어떤 문제가 있고, 그 문제를 처리하기 위해 특정 단위의 일(task)들로 나눌 때, 더 이상 쪼개어 나누어 지지 않는 최소 단위의 일들이 가진 성질을 원자성이라고 한다.


4.의존성(Dependency)

두 요소 사이에 존재하는 방향성 있는 관련성(relationship)

이렇게 생각해보자. 위에서 OS가 처리하는 각각의 일(task)들이 서로 서로 독립적이지 않은 경우, 즉 서로 따로 따로 처리할 수 없는 경우라고 생각하면 될 것 같다. 따로 따로 처리할 수 없기 때문에 서로 연관이 있는 부분이 있을 것이고, 그런 연관성을 따져보면 어떤 task A와 task B에 대해서 아래와 같은 관계가 있을 수 있다.

  1. task A를 수행하기 위해 task B가 선행 되어야 한다.
  2. task B를 수행하기 위해 task A가 선행 되어야 한다.
  3. 둘 다 (양방향)

독립의 반대라고 생각하자.


Reference :
[1] https://www.youtube.com/watch?v=-C4j7DpUtLs&list=PLXvgR_grOs1BQCziQ_MpM877BdBxwbMzA&index=16

profile
방구석 언어기술자

0개의 댓글

관련 채용 정보