2016년 9월 20일 화요일

3과 os

프로세스를 사용자 관점과 시스템 관점으로 구분하여 설명하시오
:사용자의 관점에서 프로세스는 주소공간을 가지고 실행하는 프로그램이고 시스템관점에서 프로세스는 스택,힙데이터와 코드영역으로 구상된 메모리구조와 어떤 자원을 사용하는지 관련 정보가 들어가 있는 동적인 객체이다.

메모리에 있는 프로세스 주소 공간의 구성과 그 역할을 설명하시오
:총 4가지로 구성되어있으며 스택,힙,코드,데이터로 구성되어있다.
스택은 임시로 데이터를 저장하는 영역으로 호출한 함수의 반환 주소,값,매개변수등에 사용한다.
힙은 코드영역과 별도로 유지되는 자유영역이다. 동적으로 메모리를 할당하려고 프로그램 실행 중 시스템 호출을 사용했다가 해제하는 방법으로 활용한다.
데이터는 프로그램의 가상주소 공간이다. 전역 변수나 정적변수를 저장하거나 할당하고실행하기전에 읽기 전용이나 읽기와 쓰기 영역으로 초기화 한다.
코드는 실행 명령을 포함하는 메모리거나 목적 파일에 있는 프로그램 영역이다. 프로그램을 실행할 때 프로세서가 디스크에서 읽어 실행하는 컴파일한 프로그램을 저장한다.

프로세스가 그림과 같이 3상태사이를 각 화살표처럼 이동하는 원인을 간단히 설명하시오.
발생하지 않으면 N/A로 표시하시오.
:
1:비실행 상태의 프로세스중에서 선택한 프로세스를 실행상태로 바뀐다.
2:주어진 시간동안 작업을 한 후 시간이 끝나면 실행상태로 돌아간다
3:N/A
4:발생 했던 인터럽트를 마치거나 제거되면 바뀐다.
5:실행중이던 프로세스에 인터럽트가 발생하면 바뀐다.
6:N/A

프로세스 중단(서스펜스)과 재시작은 언제 발생하는가?
:인터럽트가 발생하거나 실행하기에 오류가 있다고 판단 할때 그리고 처리작업량이 과도할때 중단과 재시작을 한다.

프로세스 제어 블록(PCB)에 저장하는 정보는?
 : 프로세스 식별자 ID, 프로세스의 현재 상태,프로세스의 우선순위, 스케줄링,프로그램의 위치, CPU레지스터 정보,기억장치 관리정보,입출력정보,해당 처리 후 따라 처리 되야 하는 프로세스 정보

프로세스에는 스레드가 하나 이상 있으며, 병렬로 수행한다. 스레드를 이용하면 얻는 이점을 서술하시오.
:병렬로 작업을 수행하기 때문에 일처리가 빨라지므로 사용자 응답성이 증가한다, 프로세스의 자원과 메모리를 공유할 수 있으며 경제성이 좋다. 그리고 멀티프로세싱으로 성능과 효율성이 향상한다.

프로세스의 3상태변화 그림을 그리고, 각 상태를 간략하게 설명하시오.
:


작업이 일어나 프로세스가 생성되면 프로세스는 준비상태에 있는다. 이 상태에서 프로세스에 실행명령(디스페치)을 받으면 실행상태가 되고 어느 시간동안 작업을 하면  시간 종료가되어 다시 준비상태가 된다. 실행상태에서 만약 인터럽트가 발행하면 대기 상태로 전환되며 대기 상태에서 인터럽트가 해결되면 준비상태가 되고 다시 실행상태가 되며 작업이 완료되면 종료가 된다.

사용자 수준 스레드와 커널 수준 스레드의 차이는? 그리고 각 구현방법은 언제더 효과적인가?
: 두 차이는 커널에 있는데 사용자 수준 스레드에서는 스레드교환에 커널이 개입되지 않아
커널이 스레드가 아닌 프로세스를 한 단위로 인식하여 프로세서들을 할당한다. 프로세스 테이블이 유지되므로 다대일 매핑시 효과적이다. 하지만 커널 수준에서는 커널이 스레드 관련된 작업들을 관리하고 한 프로세서에서 다수의 스레드가 프로세서를 할당받아 병행으로 작업이 이루어진다. 병행적으로 작업이 이루어지므로 일대일 매핑이 효과적이다.

스레드를 생성할때 사용하는 자원은? 이것은 프로세스를 생성할 때와 어떻게 다른가?
:스레드는 프로세스의 제어만 분리 실행하므로 생성시 그 제어 그룹의 자원 예를들어 코드,데이터,주소,레지스터,포인터 등을 공유하며 생성된다.이것이 프로세서와 다른 점은 프로세스는  실행중에 생성될시 독립적인 주소공간을 갖고 생성된다.

프로세스를 종료하는 과정을 예로 들어 설명하시오
:프로세스가 마지막 명령을 실행하면 중료하여 os에 프로세스를 요청한다.
예를 들면 이런 명령어가 있다면
 #!/bin/sh
  for PID `ps -ef | grep test | grep -v grep | awk '{print $2}'`
  do
  kill -9 $PID
  done
kill이란 명령어를 실행하여 중료 프로세스를 요청하여 done으로 실행되어 프로세스가 종료가 된다.

인터럽트와 트랩의 차이를 설명하시오
:트랩은 부적절한 파일 접근이나 현재 실행중인 프로세스 오류나 예외 상황이 발생시 시스템에서 치명적인 오류인지 판단하여  프로세스를 종료하여 교환 하지만 인터럽트는 프로세스 상태를 바꾸고 제어를 넘겨주어 문맥교환을 한다.

문맥 교환과 발생하는 시기를 기술하시오
:문맥 교환이 발생할때는 인털럽트나 트랩이 발생할때인데 현제 프로세스와 별도로 외부에서 이벤트가 발생할때 일어난다.

사용자 수준 스레드와 장단점을 설명하시오
: 커널에서 스레드를 지원할 필요가없어 모든 운영체제에서 적용이 가능하며 오버헤드가 적다 또한 응용프로그램에 맞게 스케줄링이 가능하다. 하지만 동시성을 갖지 못해 동일한 프로세스 내에 한개의 스레드가 대기 상태가 되면 실행이 않되고 확장의 제약을 받는다. 그리고 스레드간의 보호가 되지 않는다.

마이크로 커널 구조운영체제를 설명하시고, 장단점을 기술하시오
: 커널이 직접 스케줄링하고 실행하여 사용자 수준의 커널 지원이 부족한 문제를 해결할 수 있으며 스레드를 병행으로 수행할수 있다. 또한 한 스레드가 대기상태가 되더라도 다른 스레드를 실행할 수 있다는 장점이 있지만 오버해드가 커지고 스케줄링과 동기화시 많은 자원이 필요하다.

동일한 프레스의 스레드사이에 1)스텍 2)데이터 세그먼트 3)힙중 무엇을 공유하는가
: 스텍과 지역데이터 문맥정보를 독립적으로 가지며 동일한 그룹사이에 스레드는 힙과 데이터세그먼트를 다른 스레드와 공유한다.

프로세스 제어 블록의 목적과 운영체제는 언제 업데이트하고 판독하는가
:프로세스 관리하고 정보를 보관하기위해 존재하며 인터럽트가 발생하여 문맥교환이 일어날때 갱신된다.

1:1스레딩 모델과 n:1스레딩 모델의 차이점과 1:1 스레딩 모델을 선호하는 이유를 설명하시오
:이 둘의 차이는 커널이 스레드를 지원하여 작업을 하게되는가의 차이가 있다. 지원하여 작업을 하게되면 병행 수행을 할수 있게된는데 이는 n:1작업보다 안정성이 크며 작업에 중단이 일어나지 않아 사용자용가 작업하기에 무리가 없다.

프로세스와 스레드 차이를 설명하시오
:프로세스는 독립적인 메모리를 가지고 있으며 실행이 되지만 스레드는 프로세스내의 메모리를 공유해 독립적인 작업을 할 수없다.

댓글 없음:

댓글 쓰기