본문 바로가기

정보처리기사/필기

과목4 : 프로그래밍언어 - 프로세스와 스레드

  • 프로그램
    • 프로세스
      • 프로세스는 실행중인 프로그램을 말한다.
        • 프로그램이 실행되면, 메모리(주 기억 장치 = RAM)와 cpu에 할당
      • 프로세스는 병렬처리가 가능함
      • 프로세스에 대한 예제
        • 노트패드를 키면, 234 pid로 하나의 프로세스가 존재한다. 그리고 다시 메모장을 키면, 231 pid가 생기고 노트패드와 독립적인 메모장 프로세스가 생성된다.
        • 구글(크롬)은 하나의 웹창(새창)을 추가하면, 스레드가 아니라 프로세스로 관리한다.
      • 프로세스 처리 순서와 과정
        •  상태전이 : 상태가 이동된다는 뜻
          • 프로그램이 실행되면, 준비 -> 실행 -> 대기 3가지를 반복한다. 하지만, 중간에 유투브, 카카오톡 등 프로그램마다 현재 단계를 기록하는 것이 PCB이다.
        • 스케줄러와 문백교환(Context Switching) : 카카오톡 켜기(준비) -> 실행(켜짐) -> PCB 켜짐상태 기록 이렇게 순환함
          • 오버헤드가 심함
        • 스케줄링(러) : 누구를 먼저 실행시킬 것인가?
          • 디스패치(Dispatch) : 준비상태에서 실행상태로 변화하는 것
          • 스케줄러 알고리즘
            • 비선점 스케줄링(Non-Preemptive Scheduling) : 가장 급한 프로세스가 있더라도 대기하여 기다리고 먼저 앞부분이 끝나고 다음 부분이 실행됨
              • FCFS(First Come First Served) : 먼저, 도착한 것이 먼저 서비스한다.
              • SJF(Shortest Job First) : 실행이 짧은 것부터 실행
                • 동시에 도착했는데, 서비스 시간이 짧은 것부터하기
              • HRN(Highest Response-ratioNext) : 우선순위
                • (시작시간 - 도착시간) + 서비스 시간
                • ___________________________ =
                • 서비스 시간
              • 대기시간 : 시작시간 - 도착시간
              • 반환시간 : 종료시간 - 도착시간
            • 선점
              • 교착상태 : 완료하기 위해 상대방의 작업의 끝나기를 기다리면서 무한대로 상태에 빠지는 상황
                • 예제 : 화장실 
                  • 상호배제(Mutual Exclusion)
                  • 점유와 대기(Hold and Wait)
                  • 비선점(Non-preemption)
                  • 환형 대기(Circular Wait) : 식사하는 철학자
                    • 원형대로 서로간을 기다림
                    • 다익스트라 학자(사람이름)
                      • 예제 : 콘서트장 티켓
                        • 콘서트에 입장하기 위해서 필요한 티켓 5개 
                        • 세마포어 : 임계영역은 티켓 5개 남은 사이트이다.
                          • 표를 포기했으면, 1하나 증감
                          • 표를 샀다면, 1하나 줄임
              • 교착상태 해결방법
                • 은행가 알고리즘
                  • 안전상태나 비안전상태 구분하여 처리함
        • PCB : 어디까지 작업을 했는지? 기록함
      • 스레드
        • 프로세스안서 실행되는 더 작은 실행 단위
        • 스레드의 종류
          • 사용자 수준의 스레드
            • 스스로 해결함(셀프 서비스), 오버헤드 줄어듬, 커널모드의 전환 없이
              • 오버헤드 : 하나의 작업을 처리하기 위해서 들어가는 시간과 비용
          • 커널 수준의 스레드
            • 시스템 성능을 높이는데, 높임
            • 병렬처리가능
              • 병렬처리 : 여러개의 작업을 한번에 처리하는 것
            • 커널이 대신해줌
        • 스레드는 고유의 스텍을 가지며, 공유 불가능
          • heap, code, data는 공유가능하다.
          • 스텍(Stack) : 변수, 실행 메인 함수
          • 힙(Heap) : 배열