의문사란 다들 알다시피 상대방에게 의중을 묻는 형의 문장형이다.
흔하게 해석할 수 있는 ~(입니)까? 이런 의미로 해석되는건 알것이라 믿는다.
쓰이는 법은 주어와 동사로 어순을 바꿔주고 종종 조동사 Do가 쓰이기도 한다.
이제 하나하나 살펴보도록 하자.
Be동사가 의문문으로 쓰이는 경우는
Be동사+주어+명사/형용사 패턴으로 쓰인다.
가장 흔히 예상할 수 있는 예문이
is she your sister?
Are you mad? 이다.
일반 동사를 의문문으로 쓰일때는 do동사가 필요하다.
Do동사+주어+동사의 표현으로 쓰인다.
일반동사는 다른 의문사와 달리 일반 동사가 앞으로 나오지 못하니 주의하자.
의문문에서 조동사가 쓰이는 경우도 있다.
I can read a book을 바꾸면 can i read a book. 으로 바뀐다는 것이다.
조동사 + 주어+ 동사로 조동사 의문문이 쓰이는데 다른 의문문과 달리 질문이 아니라
부탁이나 허락 등 특정 목적을 가지는 경우가 많다.
가장 크게 나눌수 있는 것은 could같은 부탁의 의미를 가지는 경우이고
would와 같이 권유를 의미하는 경우가 있으며 would like과 같은 격식표현을 지닌 권유가
지니는 경우가 있다.
의중을 묻는 것은 who,what,when,where,why,how 등이 있다.
의문사가 쓰이면 의문사+be동사+주어 혹은 의문사+조동사+주어+동사의 어순이 있다.
예문들을 보면서 확인해보도록하자.
What's your plan from now on?
What do you think about traveling abroad?
How do you like the movie?
Where can i find a restroom?
How can i contact you?
2016년 10월 30일 일요일
2016년 10월 28일 금요일
절-2
절은 명사역할을 할 수 있으므로 부사절을 할 수 있다.
일단 형용사절을 마무리하자. 관계부사절은 관계대명사절과 마찬가지로 명사 뒤에서 수식하는 역할을 한다. 관계부사는 각 역할에 따라 다르게 표현된다.
시간을 나타내면 when, 장소일때는 whrere, 방법은 why , 혹은 how로 표현한다.
또한 관계부사는 관계부사절 내에서 부사(전치사+명사)의 역할을 한다.
i remember the day when we first met.
This is the place where you can see the sea
I don't know the reason why she left me
Please tell me how you became so pretty.
그런데 이 when,where,how,why를 바꿀수 있는데 when은 on the day. where 는 at the place, why는 for the reason, how는 in the way로 바꾸는게 가능한다.
부사절은 때,이유 등을 나타내는 접속사가 쓰이며 위치는 문장앞이나 뒤 어디는 가능하다.
때를 표현하는 접속사로는 when, before,while등이 가능하다.
전에를 나타내는 before, 동안을 나타내는 while, ~까지인 (un)til, 이래로로 표현하는 since, ~하자 마자를 나타내는 as soon as, ~때 마다를 나타내는 everytime,whenever, 이유를 나타내는 because,as가 있다.
조건,양보의 부사절을 말해보자.
if,unless,once,as long as, in case.
if는 조건 부사로서 ~하면이라는 뜻이며 unless는 ~하지 않으면이란 뜻이다.
if we don't leave now
unless he talks to me first
once는 일단 ~하면이라는 말이다. as long as는 ~하기만 하면의 뜻이다.
once i start sneezing
as long as it's interesting
in case는 ~에 대비해서라는 뜻이다.
in case it rains
though,although,even though등은 역접의 뜻을 지닌다. 비록 ~이지만 혹은 ~하더라도 라는 뜻을 갖는다.
I admire her though i don't agree with her
Even though you're busy, don't forget to email me often
일단 형용사절을 마무리하자. 관계부사절은 관계대명사절과 마찬가지로 명사 뒤에서 수식하는 역할을 한다. 관계부사는 각 역할에 따라 다르게 표현된다.
시간을 나타내면 when, 장소일때는 whrere, 방법은 why , 혹은 how로 표현한다.
또한 관계부사는 관계부사절 내에서 부사(전치사+명사)의 역할을 한다.
i remember the day when we first met.
This is the place where you can see the sea
I don't know the reason why she left me
Please tell me how you became so pretty.
그런데 이 when,where,how,why를 바꿀수 있는데 when은 on the day. where 는 at the place, why는 for the reason, how는 in the way로 바꾸는게 가능한다.
부사절은 때,이유 등을 나타내는 접속사가 쓰이며 위치는 문장앞이나 뒤 어디는 가능하다.
때를 표현하는 접속사로는 when, before,while등이 가능하다.
전에를 나타내는 before, 동안을 나타내는 while, ~까지인 (un)til, 이래로로 표현하는 since, ~하자 마자를 나타내는 as soon as, ~때 마다를 나타내는 everytime,whenever, 이유를 나타내는 because,as가 있다.
조건,양보의 부사절을 말해보자.
if,unless,once,as long as, in case.
if는 조건 부사로서 ~하면이라는 뜻이며 unless는 ~하지 않으면이란 뜻이다.
if we don't leave now
unless he talks to me first
once는 일단 ~하면이라는 말이다. as long as는 ~하기만 하면의 뜻이다.
once i start sneezing
as long as it's interesting
in case는 ~에 대비해서라는 뜻이다.
in case it rains
though,although,even though등은 역접의 뜻을 지닌다. 비록 ~이지만 혹은 ~하더라도 라는 뜻을 갖는다.
I admire her though i don't agree with her
Even though you're busy, don't forget to email me often
2016년 10월 25일 화요일
7강 os
논리적 주소와 물리적 주소 차이를 설명하시오
:논리적 주소란 가상의 주소로 cpu가 생성한 주소를 말한다. 목적 코드가 저장된 공간과 프로그램에서 사용하는 자료구조 등이 이에 해당하며 물리적 주소는 논리적 주소에 대응하여 적재하는 주소로, 메모리 팁이나 디스크 공간에서 생성된다.
프레임 32개로 구성된 실제 물리적 주소 공간으로 매핑되는 1024byte의 페이지 8개인 논리적 주소 공간을 생각해 보자
:
1) 논리적 주소에 몇 개의 비트가 있는가?
1024가 2의 10승이고 8이 2의 승이므로 10+3으로 2의 13승이되니 13비트이다.
2) 물리적 주소에 몇 개의 비트가 있는가?
32가 2의 5승이고 1024가 2의 10승이므로 2의 15승 15비트이다.
다음 할당 알고리즘을 설명하시오
:
1)최초 적합
:프로세스를 사용가능 공간 중 충분히 큰 첫번째 공간에 할당하는 방법으로 사용가능 공간의 리스트 맨 랖이나 이전의 최초 적합 검색이 끝났던 곳에서 시작하면 충분히 큰 사용공간을 찾을수 있다.
2)최적 적합
: 프로세스를 충분히 큰 사용 가능 공간 중에서 들어갈 수 있는 가장 작은 공간에 할 당 한다. 사용 가능 공간을 계속 정렬하는 과정이 필요하므로 시간이 많이 소모되 비효율적일 수 있지만 사용가능 공간의 이용룰은 향상된다.
3)최악 적합
:프로세스를 가장 큰 사용공간에 할당된다. 최적 적합과 같이 공간을 계속 정렬해야하므로 시간이 걸리나 가장 큰 공간에 할당하기 때문에 가장 작은 또 다른 사용 가능 공산을 만들 필요가 없어 메모리 활용면에서 더 유용하다.
4)100KB,500kb,200kb,300kb,600kb 순으로 기억장치가 분할 되었을떄 1~3개의 알고리즘은 프로세스 212kb,417kb,112kb,426kb를 어떤 순서로 할당 하는가? 어느 알고리즘이 기억장치를 가장 적정하게 사용하는가?
:최초적합을 사용한다면 500kb->600kb->500kb그리고 426kb는 다른 프로세스가 작업을 끝낼때 까지 대기한다.
최적 적합은 300kb-> 500kb->200kb->600kb 순으로 사용이 된다.
최악 적합은 600kb->500kb->300kb 그리고 426kb는 다른 프로세스가 작업을 끝낼때까지 대기해야한다.
내부 단편화와 외부 단편화의 차이를 설명하시오
:내부 단편화는 분할된 메모리속에 프로세스가 할당 된후 남는 메모리를 말하며 외부 단편화는 분할된 메모리가 프로세스보다 작아서 할당을 못받는 경우 이를 외부 단편화라 한다.
왼쪽 세그먼트 테이블을 참고하여 오른쪽 1~6의 논리적 주소에서 물리적 주소를 구하시오.
:
1)0,430 :649
2)1,10 :2310
3)1,11:2311
4)2,500 :590
5)3,400 :1727
6)4,112 :2064
세그먼트 하나가 다른프로세스 2개의 주소공간에 속할 수 있는 방법을 설명하시오
:세그먼트 공유를 하면 되는데 공유한다고 선언만 하면 된다. 세그먼트 테이블에 있는 항목을 동일한 메모리 주소를 지정하면 공유가 가능하다.
페이지 테이블을 메모리에 저장한 페이징 시스템이 있다. 다음 질문에 답하시오
:1)메모리 참조가 200나노초 걸렸다면, 페이지로 된 기억장치의 참조는 얼마나 걸리는가?
:메모리 참조가 200나노초 그리고 페이지로 기억창지 참조 시간 200초로 총 400초가 걸린다.
2)연관 레지스터를 추가하여 모든 페이지 테이블 참조의 75%를 연관 레지스터에서 찾는다면, 실제 메모리 접근시간은 얼마나 되는가?(단, 연관 레지스터에서 어떤 페이지 테이블 항목을 찾을때 해당 항목이 그곳에 있는다면 시간은 걸리지 않는다고 가정한다.)
:0.75*200+0.25*400으로 150+100인 250초 걸린다.
페이지 테이블에서 항목 2개가 메모리의 동일한 페이지 프레임을 가리킨다면 그 결과는 어떻게 될까? 많은 양의 메모리를 한 장소에서 다른 장소로 복사할 때 이것을 사용하여 어떻게 필요한 시간의 양을 감소시킬수 있는가? 한 페이지를 다른 페이지로 업데이트했을 때 어떤 효과가 있는가?
: 2개의 항목들이 메오리에서 동일한 페이지로 나타나게 하면 사용자들은 코드와 데이터를 공유 할 수 있다. 많은 양의 메모리를 복사한다면 서로다른 테이블들을 동일한 메모리 할당을 나타내게 하므로 시간의 양을 감소 시킬 수 있다. 한페이지를 다른 페이지로 업데이트 했을땐 그 코드를 사용 할 수 있는 모든 상용자가 그것을 변경 할 수 있고 다른 사용자들이 복사 할 수 있다.
바인딩을 설명 하시오
:하나의 프로세스에 논리적 주소와 물리적 주소를 연결 시켜주는 작업을 의미한다.
중첩(오버레이)의 개념과 단점을 설명하시오
:운영체제 영역과 메모리 일부에는 프로그램에 꼭 필요한 명령어와 데이터만 저장하고 나머지는 필요할때 호출하여 적재하는 방법이다. 무척이나 효율적인 방법이긴 하지만 프로그램의 크기가 거대해져 전체 자료구조를 이해하기 어려워 항상 사용은 못하므로 제한된 하드웨어에서만 사용한다.
동적 적재의 개념과 장점을 설명하시오
:바인딩을 최대한 늦춰 실행 직전에 주소를 확정하여 메모리를 효율적으로 운영하는 방법을 말한다. 사용하지 않을 루틴을 메모리에 적재하지 않으므로 메모리를 효율적으로 사용할 수 있으며 프로그램 전체 양이 많을 떄 유용하다.
재할당 레지스터를 설명하시오
: 수행중인 프로그램을 다른 곳으로 옮기게 해줘 프로그램이 계속 실행되게 해준다. 이렇게 하면 프로그래머는 마치 0번지에서 시작 하는 것처럼 프로그램을 작성 할 수있다.
고정분할 영역을 만드는 방법을 열거하시오
:기준 레지스터와 한계 레지스터를 사용하는 방법과 현재 실행 중인 위.아래 바운드 레지스터를 사용하는 방법이다.
세그먼트를 설명하시오
:가상 기억장치에 있어서 가장 어드레스 구조를 실현하기 위해 운영체제에 의해 어떤 바이트 수 단위로 분할되는 가상 기억 영역을 말한다.
페이지크기가 4kb이고 메모리 크기가 256kb인 메모리 페이징 시스템이 있다고 가정하여 다음 질문에 답하시오
1) 페이지 프레임 수는?
:256의 메모리가 4kb의 크기를 가지니 총 64개이다.
2)이 메모리 주소를 해결하는 데 필요한 비트는?
:4kb는 2의 12승이고 페이지 프레임은 256kb로 2의 6승이다. 따라서 18비트이다.
3)페이지 번호에 사용하는 비트 페이지 오프셋에 사용하는 비트는?
:페이지 번호는 6비트이고 페이지오프셋은 12비트이다.
크기가 212바이트인 동일한 분할(영역)과 232바이트의 메인 메모리를 갖는 고정 분할 방법을 사용하는 시스템이 있다고 가정하자. 프로세스 테이블은 각 상주 프로세스의 분할 포인터를 유지한다. 프로세스 테이블의 포인터에 필요한 비트는?
:프로세스 테이블 포인터는 시스템의 각 분할을 가리킬수 있어야한다. 따라서 메인메모리 크기를 분할 크키로 나누어 필요 비트를 나타낼 수 있다. 즉 2의 20승으로 20비트이다.
페이지 크기가 1KB라고 가정하면, 다음 주소 참조에서 페이지 번호와 어프셋은?
:
페이징 시스템에서 프로세스는 쇼유하지 않는(적재되지 않는) 메모리에 액세스 할 수 없다. 다음 질문에 답하시오
:
1) 프로세스가 소유하지 않는(적재되지 않는)메모리에 엑세스 할 수 없는 이유는?
:페이징 시스템의 주소는 논리적 페이지 번호와 오프셋이다. 이 논리적 페이지는 물리적 페이지를 기반으로 검색하기 때문에 프로세스에 할당된 물리페이지에 엑세스하도록 프로세스를 제한할 수 있다. 따라서 프로세스는 그 페이지가 페이지 테이블에 없기 때문에 페이지를 참조할 수 없다.
2)운영체제가 다른 메모리에 엑세스 할 수 있을까? 그리고 운영체제가 다른 메모리에 엑세스 할 수 있게 해야하는가 , 아니면 하지 않아도 되는가?
:이러한 엑세스를 허용하기 위해, 운영체제는 적제되지 않은 메모리에 대한 항목은 프로세스의 페이지 테이블에 단순하게 추가되도록 할 필요가 있다. 두 개 이상의 프로세스가 다른 논리 주소라도 동일한 물리적 주소로 읽고 작성할 때 유용하다.
페이징 시스템에서 페이지 테이블이 어떤 기능을 하는지 설명하시오
:페이지의 논리적 주소인 페이지 번호와 이에 대응하는 물리적 주소인 페이지 프레임 주소를 포함하며 별도의 레지스터로 구성하거나 메인 메모리에 배치하기도 한다.
컴파일러에서는 함수 호출이나 순환의 시작부분으로 점프하는 코드와 데이터를 참조하는 주소를 생성해야한다. 메모리 시스템에서 이 주소는 물리적인 주소인가, 아니면 논리적 주소인가.
: 논리적 주소이다. 함수 호출과 순환 부분 그리고 데이터를 참조하는 주소를 생성하려면 페이지 테이블을 참조 해야하므로 물리적 주소를 참조되야한다. 따라서 논리적 주소이다.
:논리적 주소란 가상의 주소로 cpu가 생성한 주소를 말한다. 목적 코드가 저장된 공간과 프로그램에서 사용하는 자료구조 등이 이에 해당하며 물리적 주소는 논리적 주소에 대응하여 적재하는 주소로, 메모리 팁이나 디스크 공간에서 생성된다.
프레임 32개로 구성된 실제 물리적 주소 공간으로 매핑되는 1024byte의 페이지 8개인 논리적 주소 공간을 생각해 보자
:
1) 논리적 주소에 몇 개의 비트가 있는가?
1024가 2의 10승이고 8이 2의 승이므로 10+3으로 2의 13승이되니 13비트이다.
2) 물리적 주소에 몇 개의 비트가 있는가?
32가 2의 5승이고 1024가 2의 10승이므로 2의 15승 15비트이다.
다음 할당 알고리즘을 설명하시오
:
1)최초 적합
:프로세스를 사용가능 공간 중 충분히 큰 첫번째 공간에 할당하는 방법으로 사용가능 공간의 리스트 맨 랖이나 이전의 최초 적합 검색이 끝났던 곳에서 시작하면 충분히 큰 사용공간을 찾을수 있다.
2)최적 적합
: 프로세스를 충분히 큰 사용 가능 공간 중에서 들어갈 수 있는 가장 작은 공간에 할 당 한다. 사용 가능 공간을 계속 정렬하는 과정이 필요하므로 시간이 많이 소모되 비효율적일 수 있지만 사용가능 공간의 이용룰은 향상된다.
3)최악 적합
:프로세스를 가장 큰 사용공간에 할당된다. 최적 적합과 같이 공간을 계속 정렬해야하므로 시간이 걸리나 가장 큰 공간에 할당하기 때문에 가장 작은 또 다른 사용 가능 공산을 만들 필요가 없어 메모리 활용면에서 더 유용하다.
4)100KB,500kb,200kb,300kb,600kb 순으로 기억장치가 분할 되었을떄 1~3개의 알고리즘은 프로세스 212kb,417kb,112kb,426kb를 어떤 순서로 할당 하는가? 어느 알고리즘이 기억장치를 가장 적정하게 사용하는가?
:최초적합을 사용한다면 500kb->600kb->500kb그리고 426kb는 다른 프로세스가 작업을 끝낼때 까지 대기한다.
최적 적합은 300kb-> 500kb->200kb->600kb 순으로 사용이 된다.
최악 적합은 600kb->500kb->300kb 그리고 426kb는 다른 프로세스가 작업을 끝낼때까지 대기해야한다.
내부 단편화와 외부 단편화의 차이를 설명하시오
:내부 단편화는 분할된 메모리속에 프로세스가 할당 된후 남는 메모리를 말하며 외부 단편화는 분할된 메모리가 프로세스보다 작아서 할당을 못받는 경우 이를 외부 단편화라 한다.
왼쪽 세그먼트 테이블을 참고하여 오른쪽 1~6의 논리적 주소에서 물리적 주소를 구하시오.
:
1)0,430 :649
2)1,10 :2310
3)1,11:2311
4)2,500 :590
5)3,400 :1727
6)4,112 :2064
세그먼트 하나가 다른프로세스 2개의 주소공간에 속할 수 있는 방법을 설명하시오
:세그먼트 공유를 하면 되는데 공유한다고 선언만 하면 된다. 세그먼트 테이블에 있는 항목을 동일한 메모리 주소를 지정하면 공유가 가능하다.
페이지 테이블을 메모리에 저장한 페이징 시스템이 있다. 다음 질문에 답하시오
:1)메모리 참조가 200나노초 걸렸다면, 페이지로 된 기억장치의 참조는 얼마나 걸리는가?
:메모리 참조가 200나노초 그리고 페이지로 기억창지 참조 시간 200초로 총 400초가 걸린다.
2)연관 레지스터를 추가하여 모든 페이지 테이블 참조의 75%를 연관 레지스터에서 찾는다면, 실제 메모리 접근시간은 얼마나 되는가?(단, 연관 레지스터에서 어떤 페이지 테이블 항목을 찾을때 해당 항목이 그곳에 있는다면 시간은 걸리지 않는다고 가정한다.)
:0.75*200+0.25*400으로 150+100인 250초 걸린다.
페이지 테이블에서 항목 2개가 메모리의 동일한 페이지 프레임을 가리킨다면 그 결과는 어떻게 될까? 많은 양의 메모리를 한 장소에서 다른 장소로 복사할 때 이것을 사용하여 어떻게 필요한 시간의 양을 감소시킬수 있는가? 한 페이지를 다른 페이지로 업데이트했을 때 어떤 효과가 있는가?
: 2개의 항목들이 메오리에서 동일한 페이지로 나타나게 하면 사용자들은 코드와 데이터를 공유 할 수 있다. 많은 양의 메모리를 복사한다면 서로다른 테이블들을 동일한 메모리 할당을 나타내게 하므로 시간의 양을 감소 시킬 수 있다. 한페이지를 다른 페이지로 업데이트 했을땐 그 코드를 사용 할 수 있는 모든 상용자가 그것을 변경 할 수 있고 다른 사용자들이 복사 할 수 있다.
바인딩을 설명 하시오
:하나의 프로세스에 논리적 주소와 물리적 주소를 연결 시켜주는 작업을 의미한다.
중첩(오버레이)의 개념과 단점을 설명하시오
:운영체제 영역과 메모리 일부에는 프로그램에 꼭 필요한 명령어와 데이터만 저장하고 나머지는 필요할때 호출하여 적재하는 방법이다. 무척이나 효율적인 방법이긴 하지만 프로그램의 크기가 거대해져 전체 자료구조를 이해하기 어려워 항상 사용은 못하므로 제한된 하드웨어에서만 사용한다.
동적 적재의 개념과 장점을 설명하시오
:바인딩을 최대한 늦춰 실행 직전에 주소를 확정하여 메모리를 효율적으로 운영하는 방법을 말한다. 사용하지 않을 루틴을 메모리에 적재하지 않으므로 메모리를 효율적으로 사용할 수 있으며 프로그램 전체 양이 많을 떄 유용하다.
재할당 레지스터를 설명하시오
: 수행중인 프로그램을 다른 곳으로 옮기게 해줘 프로그램이 계속 실행되게 해준다. 이렇게 하면 프로그래머는 마치 0번지에서 시작 하는 것처럼 프로그램을 작성 할 수있다.
고정분할 영역을 만드는 방법을 열거하시오
:기준 레지스터와 한계 레지스터를 사용하는 방법과 현재 실행 중인 위.아래 바운드 레지스터를 사용하는 방법이다.
세그먼트를 설명하시오
:가상 기억장치에 있어서 가장 어드레스 구조를 실현하기 위해 운영체제에 의해 어떤 바이트 수 단위로 분할되는 가상 기억 영역을 말한다.
페이지크기가 4kb이고 메모리 크기가 256kb인 메모리 페이징 시스템이 있다고 가정하여 다음 질문에 답하시오
1) 페이지 프레임 수는?
:256의 메모리가 4kb의 크기를 가지니 총 64개이다.
2)이 메모리 주소를 해결하는 데 필요한 비트는?
:4kb는 2의 12승이고 페이지 프레임은 256kb로 2의 6승이다. 따라서 18비트이다.
3)페이지 번호에 사용하는 비트 페이지 오프셋에 사용하는 비트는?
:페이지 번호는 6비트이고 페이지오프셋은 12비트이다.
크기가 212바이트인 동일한 분할(영역)과 232바이트의 메인 메모리를 갖는 고정 분할 방법을 사용하는 시스템이 있다고 가정하자. 프로세스 테이블은 각 상주 프로세스의 분할 포인터를 유지한다. 프로세스 테이블의 포인터에 필요한 비트는?
:프로세스 테이블 포인터는 시스템의 각 분할을 가리킬수 있어야한다. 따라서 메인메모리 크기를 분할 크키로 나누어 필요 비트를 나타낼 수 있다. 즉 2의 20승으로 20비트이다.
페이지 크기가 1KB라고 가정하면, 다음 주소 참조에서 페이지 번호와 어프셋은?
:
페이징 시스템에서 프로세스는 쇼유하지 않는(적재되지 않는) 메모리에 액세스 할 수 없다. 다음 질문에 답하시오
:
1) 프로세스가 소유하지 않는(적재되지 않는)메모리에 엑세스 할 수 없는 이유는?
:페이징 시스템의 주소는 논리적 페이지 번호와 오프셋이다. 이 논리적 페이지는 물리적 페이지를 기반으로 검색하기 때문에 프로세스에 할당된 물리페이지에 엑세스하도록 프로세스를 제한할 수 있다. 따라서 프로세스는 그 페이지가 페이지 테이블에 없기 때문에 페이지를 참조할 수 없다.
2)운영체제가 다른 메모리에 엑세스 할 수 있을까? 그리고 운영체제가 다른 메모리에 엑세스 할 수 있게 해야하는가 , 아니면 하지 않아도 되는가?
:이러한 엑세스를 허용하기 위해, 운영체제는 적제되지 않은 메모리에 대한 항목은 프로세스의 페이지 테이블에 단순하게 추가되도록 할 필요가 있다. 두 개 이상의 프로세스가 다른 논리 주소라도 동일한 물리적 주소로 읽고 작성할 때 유용하다.
페이징 시스템에서 페이지 테이블이 어떤 기능을 하는지 설명하시오
:페이지의 논리적 주소인 페이지 번호와 이에 대응하는 물리적 주소인 페이지 프레임 주소를 포함하며 별도의 레지스터로 구성하거나 메인 메모리에 배치하기도 한다.
컴파일러에서는 함수 호출이나 순환의 시작부분으로 점프하는 코드와 데이터를 참조하는 주소를 생성해야한다. 메모리 시스템에서 이 주소는 물리적인 주소인가, 아니면 논리적 주소인가.
: 논리적 주소이다. 함수 호출과 순환 부분 그리고 데이터를 참조하는 주소를 생성하려면 페이지 테이블을 참조 해야하므로 물리적 주소를 참조되야한다. 따라서 논리적 주소이다.
절-1
절이란 둘 이상의 문장을 하나의 문장으로 구성되어 있는 것을 말한다. 이것을 만드는 것이 바로 접속사다. 접속사에서는 가장 유명한것은 That과 what이다. 지금은 언급 안하겠지만 나중에 이 두 접속사에 대해 말하겠다.
우선적으로 명사절에 대해 말해보도록 하겠다. 아무리 절이라도 명사이기 때문에 명사의 속성을 유지한다. 때문에 목적어,주어,형용사,부사로 쓰일 수 있다.그럼 이제 하나씩 살펴보도록하자.
목적어 절은 말 그대로 목적어로써 사용이 가능하다. 이 절에서 사용되는 접속사는 that, if, 의문사 등이 가능하다. 접속사가 이끄는 절은 목적어로서 큰 절에안겨있듯이 보인다.
I believe that she will win
이 문장에서 that절은 전체 문장 속에 포함되며 이 문장의 목적어 역할을 하고 있다.
that은 특별한 의미는 없고 '~(하)는 것' 혹은 그것은 의 의미를 갖는다. 생략이 가능해 생략시 문장의 구조를 잘 파악해야 한다.
I know you are French. 여기서 that을 생략하여 ~라는 것의 의미를 갖는다.
I don't know if the rumor is true 여기서 if는 뒷 문장과 연결 시켜주는 접속사로서 역할을 한다. 이때 if는 만약의 조건이 아니라 ~인지라는 의미로 조건아닌 조건의 의미를 갖는 것이다.
의문사가 명사절을 이끌때도 있다.
I don't know why she was so angry
의미는 똑같이 의문문으로 해석하면 된다.
주어절로 쓰이는 방법을 말하겠다.
여기서 한가지를 알아야 하는것은 기본적으로 영어는 가벼운 정보가 무거운 정보보다 먼저 나오기 때문에 주어인 명사절은 주어위치가 아닌 목적어 뒤로 오는 경우가 상당하다.
문장의 주어로 명사절인 that과 if절이 쓰이는데 막상 만들어보면 앞머리가 무거워진다. 이때 가주어인 It을 주어 자리에 두도록 만든다.
It's necessary that you attend the morning
Is it okay if I drop in at 2:30?
여기서 it은 가주어로서 의미를 특별히 갖지 않으며 that문장과 if문장은 주어역할을 하는 절이다.
이때 목적어가 감정이나 형용사일 경우엔 의미가 조금 달라진다. 명사절의 의미는 ~하다니로 해석하면 자연스럽다.
It's a pity that he died so young
여기서 that은 ~하게 되니로 해석하면 좋다. 물론 꼭 그럴 필요는 없다.
형용사절에서 주격대명사절을 알아보자.
관계대명사절은 명사를 뒤에서 수식하는 형용사 역할을 하는 절이다.
이 대명사 who,which,that등이 관계대명사절 전체를 이끈다.
우리말에는 관계대명사에 해당하는 말이 따로 없지만 뭐든 꾸미는 말이 앞으로 나오지만 영어에서는 마치 소시지처럼 정보가 차례로 나열되어 있다.
She likes a man who is good at singing.
관계대명사에서 한가지 봐야 할 것은 수식하는 대상이 사람이면 that 또는 who, 사물이면 which와 that으로 사용한다. 또한 목적이 무엇이냐에 따라 주격과 목적격으로 구분된다.
우선적으로 명사절에 대해 말해보도록 하겠다. 아무리 절이라도 명사이기 때문에 명사의 속성을 유지한다. 때문에 목적어,주어,형용사,부사로 쓰일 수 있다.그럼 이제 하나씩 살펴보도록하자.
목적어 절은 말 그대로 목적어로써 사용이 가능하다. 이 절에서 사용되는 접속사는 that, if, 의문사 등이 가능하다. 접속사가 이끄는 절은 목적어로서 큰 절에안겨있듯이 보인다.
I believe that she will win
이 문장에서 that절은 전체 문장 속에 포함되며 이 문장의 목적어 역할을 하고 있다.
that은 특별한 의미는 없고 '~(하)는 것' 혹은 그것은 의 의미를 갖는다. 생략이 가능해 생략시 문장의 구조를 잘 파악해야 한다.
I know you are French. 여기서 that을 생략하여 ~라는 것의 의미를 갖는다.
I don't know if the rumor is true 여기서 if는 뒷 문장과 연결 시켜주는 접속사로서 역할을 한다. 이때 if는 만약의 조건이 아니라 ~인지라는 의미로 조건아닌 조건의 의미를 갖는 것이다.
의문사가 명사절을 이끌때도 있다.
I don't know why she was so angry
의미는 똑같이 의문문으로 해석하면 된다.
주어절로 쓰이는 방법을 말하겠다.
여기서 한가지를 알아야 하는것은 기본적으로 영어는 가벼운 정보가 무거운 정보보다 먼저 나오기 때문에 주어인 명사절은 주어위치가 아닌 목적어 뒤로 오는 경우가 상당하다.
문장의 주어로 명사절인 that과 if절이 쓰이는데 막상 만들어보면 앞머리가 무거워진다. 이때 가주어인 It을 주어 자리에 두도록 만든다.
It's necessary that you attend the morning
Is it okay if I drop in at 2:30?
여기서 it은 가주어로서 의미를 특별히 갖지 않으며 that문장과 if문장은 주어역할을 하는 절이다.
이때 목적어가 감정이나 형용사일 경우엔 의미가 조금 달라진다. 명사절의 의미는 ~하다니로 해석하면 자연스럽다.
It's a pity that he died so young
여기서 that은 ~하게 되니로 해석하면 좋다. 물론 꼭 그럴 필요는 없다.
형용사절에서 주격대명사절을 알아보자.
관계대명사절은 명사를 뒤에서 수식하는 형용사 역할을 하는 절이다.
이 대명사 who,which,that등이 관계대명사절 전체를 이끈다.
우리말에는 관계대명사에 해당하는 말이 따로 없지만 뭐든 꾸미는 말이 앞으로 나오지만 영어에서는 마치 소시지처럼 정보가 차례로 나열되어 있다.
She likes a man who is good at singing.
관계대명사에서 한가지 봐야 할 것은 수식하는 대상이 사람이면 that 또는 who, 사물이면 which와 that으로 사용한다. 또한 목적이 무엇이냐에 따라 주격과 목적격으로 구분된다.
2016년 10월 23일 일요일
전치사구의 수식과 부사 역할
전치사란 명사 앞에 위치하는 품사로 on,at,in,for,from,등이 있다. 하나의 전치사는 다양한 의미가 있어 하나만 외우기란 힘들어 이미징해서 외우는 방식이 좋다. 여기서는 전치사 구를 설명하기 때문에 지금 말하지는 않겠지만 심도있게 생각하도록 하는게 좋을거다.
전치사구는 전치사+명사로 이떄 명사는 전치사의 목적어로 쓰인다.
예를 들자면
in front of me, with a gun, next to the window 등 전치사와 명사로 되어있다.
여기서 중요한 건 전치사의 의미를 알아야 한다는 것이다.
to부정사는 여러모로 쓰임세가 많다는건 앞에서 소개를 해서 잘 알것이다. 부사 역할은 대체로 어떤것을 하기 위해서의 목적의 의미로 많이 쓰인다. 가장 많이 쓰이다 보니 웃기게도
I'm pleased to see you again
이 문장을 저렇게 해석하면 너를 다시 보기위해 기쁘다. 이렇게 해석하게 된다.
이 문장은 ~하니로 해석을 해야한다.
결론적으로 to부정사는 '~하기 위해'의 목적의 의미와 '~해서' 혹은 ' ~때문에' 결과의 의미를 갖게 되니 잘 알아두자.
전치사구의 부사는 주로 시간 및 방법 그리고 장소 등 다양한 의미를 지닌다.
이건 설명할게 없고 예문으로 보면 알것이다.
I wake up at dawn.
They met on a blind date for the first time
There's a pharmacy right next to the hospital
l'm going in the same direction
I don't want to eat by myself
My daughter passed the exam with difficulty
각 2 문장씩 같은 의미를 가지는 전치사구이다. 첫번째와 두번째는 시간을 나타내는 의미이며 3,4번째는 장소를 의미한다, 마지막 2문장은 방법을 나타낸다. 각 전치사마다 의미가 담겨있지만 모든 것이 정해져있지 않으므로 한정 짓는 것은 금물이다.
전치사구는 전치사+명사로 이떄 명사는 전치사의 목적어로 쓰인다.
예를 들자면
in front of me, with a gun, next to the window 등 전치사와 명사로 되어있다.
여기서 중요한 건 전치사의 의미를 알아야 한다는 것이다.
to부정사는 여러모로 쓰임세가 많다는건 앞에서 소개를 해서 잘 알것이다. 부사 역할은 대체로 어떤것을 하기 위해서의 목적의 의미로 많이 쓰인다. 가장 많이 쓰이다 보니 웃기게도
I'm pleased to see you again
이 문장을 저렇게 해석하면 너를 다시 보기위해 기쁘다. 이렇게 해석하게 된다.
이 문장은 ~하니로 해석을 해야한다.
결론적으로 to부정사는 '~하기 위해'의 목적의 의미와 '~해서' 혹은 ' ~때문에' 결과의 의미를 갖게 되니 잘 알아두자.
전치사구의 부사는 주로 시간 및 방법 그리고 장소 등 다양한 의미를 지닌다.
이건 설명할게 없고 예문으로 보면 알것이다.
I wake up at dawn.
They met on a blind date for the first time
There's a pharmacy right next to the hospital
l'm going in the same direction
I don't want to eat by myself
My daughter passed the exam with difficulty
각 2 문장씩 같은 의미를 가지는 전치사구이다. 첫번째와 두번째는 시간을 나타내는 의미이며 3,4번째는 장소를 의미한다, 마지막 2문장은 방법을 나타낸다. 각 전치사마다 의미가 담겨있지만 모든 것이 정해져있지 않으므로 한정 짓는 것은 금물이다.
6화 os
단기 스케줄링, 중기 스케줄링, 장기 스케줄링의 차이를 기술하시오.
: 단기 스케줄링은 프로세서 스케줄러라고 부르며 메인 메모리의 준비상태에 있는 작 업 중에서 실행할 작업을 선택하고 프로세서를 배당하는 일을 한다.
중기 스케줄링은 현재 생성되어 있는 프로세스 중에 비효율적으로 시스템의 자원을 낭비 하고 있는 프로세스가 있을 경우 보조기억장치로 추방하는 스케줄링이다.
장기 스케줄링은 작업 스케줄러라고 부르기도 하며 어떤 작업이 시스템에 들어와서 스케 줄링 원칙에 따라 디스크 내의 어떤 작업을 어떤 순서로 메모리에 가져와서 처리할 것인 가를 결정하는 프로그램
선점 스케줄링과 비선점 스케줄링의 차이점을 정의하시오. 엄격한 비선점식 스케줄링을 사용하지 않는 이유도 설명하시오.
:선점 스케줄링은 실행중인 프로세스를 중간에 중지하고 다른 프로세스를 실행할수 있으며 비선점 스케줄링 실행중인 프로세스를 중지 불가능하다 .
62. 다음 프로세스들이 시간 0에 P1, P2, P3, P4, P5 순으로 도착한다고 가정하여 다음 질문에 답하시오.
:
선입선처리, 최소작업 우선, 비선점 우선순위, 순환 할당(할당량=1)을 이용하여 이를 프로 세스들의 실행을 설명하는 간트 차트로 그리시오.
[선입선처리]
[최소작업 우선]
[선점 우선순위]
[순환 할당]
[HRN]
각 스케줄링 알고리즘에 대한 반환시간은?
선입선처리 : 38.2
선점 최소작업 우선 : 24
선점 우선순위 : 33
순환 할당 : 34.8
HRN : 25.2
각 스케줄링 알고리즘에 대한 대기시간은?
선입선처리 : 26
선점 최소작업 우선 : 11.8
선점 우선순위 : 20.8
순환 할당 : 22.6
HRN : 12.8
어떤 스케줄링이 모든 프로세스에서 최소의 평균 대기시간을 갖는가?
:평균 대기시간 11.8로 선점 최소작업 우선 방식의 평균대기시간이 가장 작다.
스케줄링의 목적을 기술하시오.
:자원 할당의 공정성 보장하며 단위 시간당 처리량 최대화한다. 또한 오버헤드를 최소화하고 자원 사용의 균형 유지 등 최대한 효율적으로 결과를 내기 위함이다.
스케줄링의 성능 기준 요소를 기술하시오.
: 사용률과 처리율, 최대화 반환시간 최소화, 대기시간 최소화, 반응 시간 최소화
다단계 피드백 큐 스케줄링 알고리즘과 전면 작업에는 라운드 로빈(순환 할당) 스케줄링 을 사용하고, 후면 작업에는 선점 우선순위 알고리즘을 사용하는 다단계 큐(전면-후면) 프로 세서 스케줄링 알고리즘의 차이를 설명하시오.
:다단계 귀환 스케줄링은 작업이 큐 사이를 이동 가능하며 서로 다른 프로세서 버스트 특성에 따라 분리 구분한다. 작업이 요구하는 프로세서 시간이 너무 크면 낮은 단계 큐로 이동 하고 입출력 중심작업과 전면 작업을 높은 우선순위 큐로 이동 하는 반면 낮은 우선순위 큐에서 오래 기다린 작업은 높은 우선순위 큐로 이동한다.
다단계 큐는 작업이 한 큐에만 고정되어 실행되며 큐 사이에 옮겨지지 않는다. 전면 작업과 후면 작업의 성질을 바꿀 수 없다. 그리고 스케줄링 부담이 적은 장점이 있으나 융통성이 적다
: 단기 스케줄링은 프로세서 스케줄러라고 부르며 메인 메모리의 준비상태에 있는 작 업 중에서 실행할 작업을 선택하고 프로세서를 배당하는 일을 한다.
중기 스케줄링은 현재 생성되어 있는 프로세스 중에 비효율적으로 시스템의 자원을 낭비 하고 있는 프로세스가 있을 경우 보조기억장치로 추방하는 스케줄링이다.
장기 스케줄링은 작업 스케줄러라고 부르기도 하며 어떤 작업이 시스템에 들어와서 스케 줄링 원칙에 따라 디스크 내의 어떤 작업을 어떤 순서로 메모리에 가져와서 처리할 것인 가를 결정하는 프로그램
선점 스케줄링과 비선점 스케줄링의 차이점을 정의하시오. 엄격한 비선점식 스케줄링을 사용하지 않는 이유도 설명하시오.
:선점 스케줄링은 실행중인 프로세스를 중간에 중지하고 다른 프로세스를 실행할수 있으며 비선점 스케줄링 실행중인 프로세스를 중지 불가능하다 .
62. 다음 프로세스들이 시간 0에 P1, P2, P3, P4, P5 순으로 도착한다고 가정하여 다음 질문에 답하시오.
:
선입선처리, 최소작업 우선, 비선점 우선순위, 순환 할당(할당량=1)을 이용하여 이를 프로 세스들의 실행을 설명하는 간트 차트로 그리시오.
[선입선처리]
[최소작업 우선]
[선점 우선순위]
[순환 할당]
[HRN]
각 스케줄링 알고리즘에 대한 반환시간은?
선입선처리 : 38.2
선점 최소작업 우선 : 24
선점 우선순위 : 33
순환 할당 : 34.8
HRN : 25.2
각 스케줄링 알고리즘에 대한 대기시간은?
선입선처리 : 26
선점 최소작업 우선 : 11.8
선점 우선순위 : 20.8
순환 할당 : 22.6
HRN : 12.8
어떤 스케줄링이 모든 프로세스에서 최소의 평균 대기시간을 갖는가?
:평균 대기시간 11.8로 선점 최소작업 우선 방식의 평균대기시간이 가장 작다.
스케줄링의 목적을 기술하시오.
:자원 할당의 공정성 보장하며 단위 시간당 처리량 최대화한다. 또한 오버헤드를 최소화하고 자원 사용의 균형 유지 등 최대한 효율적으로 결과를 내기 위함이다.
스케줄링의 성능 기준 요소를 기술하시오.
: 사용률과 처리율, 최대화 반환시간 최소화, 대기시간 최소화, 반응 시간 최소화
다단계 피드백 큐 스케줄링 알고리즘과 전면 작업에는 라운드 로빈(순환 할당) 스케줄링 을 사용하고, 후면 작업에는 선점 우선순위 알고리즘을 사용하는 다단계 큐(전면-후면) 프로 세서 스케줄링 알고리즘의 차이를 설명하시오.
:다단계 귀환 스케줄링은 작업이 큐 사이를 이동 가능하며 서로 다른 프로세서 버스트 특성에 따라 분리 구분한다. 작업이 요구하는 프로세서 시간이 너무 크면 낮은 단계 큐로 이동 하고 입출력 중심작업과 전면 작업을 높은 우선순위 큐로 이동 하는 반면 낮은 우선순위 큐에서 오래 기다린 작업은 높은 우선순위 큐로 이동한다.
다단계 큐는 작업이 한 큐에만 고정되어 실행되며 큐 사이에 옮겨지지 않는다. 전면 작업과 후면 작업의 성질을 바꿀 수 없다. 그리고 스케줄링 부담이 적은 장점이 있으나 융통성이 적다
2016년 10월 9일 일요일
식사하는 철학자
#include <stdio.h>
#include <pthread.h>
#define NUM_THREADS 5
pthread_mutex_t mutexes[NUM_THREADS];
pthread_cond_t conditionVars[NUM_THREADS];
int
permits[NUM_THREADS];
pthread_t tids[NUM_THREADS];
void
pickup_forks(
int
philosopher_number) {
pthread_mutex_lock(&mutexes[philosopher_number%NUM_THREADS]);
while
(permits[philosopher_number%NUM_THREADS] == 0) {
pthread_cond_wait(&conditionVars[philosopher_number%NUM_THREADS], &mutexes[philosopher_number%NUM_THREADS]);
}
permits[philosopher_number%NUM_THREADS] = 0;
pthread_mutex_unlock(&mutexes[philosopher_number%NUM_THREADS]);
}
void
return_forks(
int
philosopher_number) {
pthread_mutex_lock(&mutexes[philosopher_number%NUM_THREADS]);
permits[philosopher_number%NUM_THREADS] = 1;
pthread_cond_signal(&conditionVars[philosopher_number%NUM_THREADS]);
pthread_mutex_unlock(&mutexes[philosopher_number%NUM_THREADS]);
}
void
* Philosopher(
void
* arg) {
int
philosopher_number;
philosopher_number = (
int
)arg;
// pickup left fork
pickup_forks(philosopher_number);
printf
(
"philosopher(%d) picks up the fork(%d).\n"
, philosopher_number, philosopher_number);
// pickup right fork
pickup_forks(philosopher_number+1);
printf
(
"philosopher(%d) picks up the fork(%d).\n"
, philosopher_number, (philosopher_number + 1) % NUM_THREADS);
printf
(
"philosopher(%d) starts eating \n"
, philosopher_number);
sleep(2);
printf
(
"philosopher(%d) finishes eating \n"
, philosopher_number);
// putdown right fork
return_forks(philosopher_number + 1);
printf
(
"philosopher(%d) put down the fork(%d).\n"
, philosopher_number, (philosopher_number + 1) % NUM_THREADS);
// putdown left fork
return_forks(philosopher_number);
printf
(
"philosopher(%d) put down the fork(%d).\n"
, philosopher_number, philosopher_number);
return
NULL;
}
void
* OddPhilosopher(
void
* arg) {
int
philosopher_number;
philosopher_number = (
int
)arg;
// pickup right fork
pickup_forks(philosopher_number + 1);
printf
(
"philosopher(%d) picks up the fork(%d).\n"
, philosopher_number, (philosopher_number + 1) % NUM_THREADS);
// pickup left fork
pickup_forks(philosopher_number);
printf
(
"philosopher(%d) picks up the fork(%d).\n"
, philosopher_number, philosopher_number);
printf
(
"philosopher(%d) starts eating \n"
, philosopher_number);
sleep(2);
printf
(
"philosopher(%d) finishes eating \n"
, philosopher_number);
// putdown left fork
return_forks(philosopher_number);
printf
(
"philosopher(%d) puts down the fork(%d).\n"
, philosopher_number, philosopher_number);
// putdown right fork
return_forks(philosopher_number + 1);
printf
(
"philosopher(%d) puts down the fork(%d).\n"
, philosopher_number, (philosopher_number + 1) % NUM_THREADS);
return
NULL;
}
int
main() {
int
i;
for
(i = 0; i < NUM_THREADS; i++) {
pthread_mutex_init(&mutexes[i], NULL);
pthread_cond_init(&conditionVars[i], NULL);
permits[i] = 1;
}
for
(i = 0; i < NUM_THREADS; i++) {
if
(i % 2) {
pthread_create(&tids[i], NULL, OddPhilosopher, (
void
*)(i));
}
else
{
pthread_create(&tids[i], NULL, Philosopher, (
void
*)(i));
}
}
for
(i = 0; i < NUM_THREADS; i++) {
pthread_join(tids[i], NULL);
}
for
(i = 0; i < NUM_THREADS; i++) {
pthread_mutex_destroy(&mutexes[i]);
pthread_cond_destroy(&conditionVars[i]);
}
return
0;
}
피드 구독하기:
글 (Atom)