CS/운영체제

운영체제 + java관련(?) + 개발자라면? :) 쓰레드를 알기전에, 멀티프로세싱/멀티프로그래밍/멀티태스킹

euncheol kim 2022. 5. 10. 21:08

goal

thread의 개념을 이해하기 전에

  • 선행 1 : 멀티프로세싱이란?
  • 선행 2 : 멀티프로그래밍이란?
  • 선행 3 : 멀티태스킹이란?
  • goal : thread란? ->포스팅예정

 

 

 

 

선행개념을 넣는 이유


사실 쓰레드만 이해해서, 쓰레드가 어떤 역할을 하는지만 이해해도 코드를 작성하는데 큰 문제는 없을 것이라 생각한다. 하지만 파고들고 파고들수록 더 큰 부분의 개념을 알게 되었고, 지금 이해한 내용을 까먹지 않기 위해 기록하는 동시에 운영체제 위에서 일반적으로 프로그램이 돌아가는 방식을 이해하기 위해 글을 적어본다. 난 개발자니까 프로그램이 시스템에서 어떻게 도는지는 알아야겠지?

 

 

 

 

 

 

근데, 이거 CS아니야?????????????????? -> 그냥 운영체제에 기입


CS내용이다. 근데, java프로그램에서는 thread처리에 매우 큰 장점을 가진다고한다.

thread는 개발하는데 있어서 고려해야할 0순위 부분이라고 생각이든다.

thread처리를 무엇인지 이해하고 코드를 작성하는 것이 나에게 큰 도움이 될 것이라고 생각했고,

두고 두고 두고 두고 두고 보고 읽고 맛보고 씹고 즐길(?) 생각이다.

 

 

 

 

 

1. thread의 개념을 보기전에


[1] 선행 1 : 멀티프로세싱이란?


 

  • 프로세서(CPU)

멀티프로세싱

  • 다수의 프로세서(CPU)가 작업을 협력적으로 일처리한다.

보통 하나의 프로세서는 하나의 작업을 맡지만, 다수의 프로세서다수의 작업을 함께 처리한다.

 

 

1. 장점

  • 하나의 프로세서가 고장이 나더라도 다른 프로세서가 작업을 하고 있기 때문에 작업이 멈추지 않는다.
  • 여러개의 프로세스가 처리되어야 할 때, 동일한 데이터를 사용한다면 각 데이터를 프로세서에게 할당할 필요 없이 하나의 공간에 데이터를 저장한 후, 이를 공유하여 사용하도록 한다. 그러면 메모리측 비용의 절약!

 

 

 

 

[2] 선행 2: 멀티프로그래밍이란? <난 이기적, 프로세스 또 접근할래>


멀티프로그래밍

 

 

작업처리의 비효율적 문제를 해결한 멀티프로그래밍

  • !!! 하나의 프로세서가 하나의 프로세스를 수행하는 동안 다른 프로세스에 접근할 수 있도록 하는 방법 !!!
  • 프로세서가 프로세스를 하나만 처리할 경우, 프로세서가 처리하는 속도와 프로세스의 입력/출력의 속도차이로 생기는 문제로 프로세서는 프로세스가 일을 처리할 때까지 가---만히 있게 된다. (idle상태)
  • 이러한 비효율적인 상태를 해결하기 위해서 고안된 방법멀티프로그래밍이다.
  • 멀티프로그래밍은 프로세스의 입/출력이 완료가 될 때까지 기다릴 필요없이 다른 프로세스를 처리함으로써 계속적인 작업을 수행할 수 있도록 한다.

 

※ 멀티프로그래밍 vs 멀티태스킹

  • 멀티프로그래밍 : 프로세서의 자원을 막기위함
  • 멀티태스킹 : 정해진 시간동안 각각의 task를 번갈아가며 수행하는 것을 의미한다.

 

 

 

[3] 선행 3: 멀티태스킹이란? <동시에 동작하는 것처럼 보이지? 넌 속고있어>


 

컴퓨터에서 두 가지 이상의 프로세스가(웹브라우저 + 뮤직 + 독서애플리케이션) 스케줄링에 의해 번갈아 가며수행되도록 해주는 것

  • 프로세서는 특정 순간에 하나의 작업만 수행할 수 있다.
  • 하지만 우리는 컴퓨터를 사용할 때, 인터넷도 사용하고 게임도 하고 웹서핑도 하는 등 작업을 동시에 사용한다.
  • 이는 운영체제의 스케줄링에 의해 번갈아 가며 작업을 수행해주기 때문이다.

추가로, 메신져 프로그램에서 메시지 작성과 파일을 같이 올리는 것도 멀티태스킹에 속한다.

 

 

멀티태스킹의 스케줄링 방식의 수행은 아래 3가지를 이용해 수행된다.

  • 멀티 프로그래밍 방식 : 생략
  • 시분할 방식(Time-sharing) : cpu 전체 사용 시간작은 작업 시간량으로 분할하여 그 시간량 동안 작업에게 cpu를 할당하는 방법
  • 시스템 방식(Real-time) : 말 그대로 실시간으로 처리해 주는 것을 의미한다.

 

 

※ 멀티프로그래밍 vs 멀티태스킹

  • 멀티프로그래밍 : 프로세서의 자원을 막기위함
  • 멀티태스킹 : 정해진 시간동안 각각의 task를 번갈아가며 수행하는 것을 의미한다.

 

 

 

[4] goal : 쓰레드란?????

포스팅예정