Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
esep_OS.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
150.53 Кб
Скачать

Есеп 7.1.8

Известно, что программа А выполняется в монопольном режиме за 10 минут, а программа В- за 20 минут, то есть при последовательном выполнении они требуют 30 мин. Если Т- время выполнения обеих этих задач в режиме мультипрограммирования, то какое из неравенств справедливо? Поясните ответ схемой.

а) Т<10; б)10<T<20; в)20<T<30; д)Т>30;

Решение:

  1. Монопольный режим:

A B T=30мин

10мин 20 мин

2)Мультипрограммный режим:

A

10мин ∆x

B

20 мин ∆y

20+∆y=Т, отсюда т.к. 20+∆y<30,тогда 20<T<30.

Вариант б (20;30)

10.1.5 Система устраняет свободные участки памяти с помощью уплотнения. Предположим, что множество свободных участков сегментов данных распределены случайно, а время для чтения или записи 32-разрядного слова в памяти равно 10 нс. Сколько времени займет уплотнение 128 Мбайт памяти в худшем случае? Построить график времени уплотнения в зависимости от объема занятой памяти.

4 байт – 10 нс =>X=(10*10-9 128*1024*1024)/4=0,34c

128 Мбайт –Х

Есеп 10.1.1

C++ тілінде есептеуге арналған екі өзіндік программа құрастыру, мысалы 0-ден 3,14 интервалындағы y=sinx, y=cosx функцияларының мәндері үшін. Осы программалардың біреуін шақыратын басқа бір программа құру. Егер программаны орындау және одан басқа программаларды жүктеу керек болса, онда аты бар <process.h> -тағы exec... функциясы қолданылады.

тапсырмаға арналған программа листингі

#include<process.h>

#include<iostream.h>

#include<errno.h>

#include<string.h>

#include<conio.h>

int main(char*argv[])

{clrscr();

char ch;

cout<<"to zadach1 - 1"<<endl;

cout<<"to zadach2 - 2"<<endl;

cout<<"to zadach3 - 3"<<endl;

cout<<"to quit - q"<<endl;

cin>>ch;

while(ch!='q')

{switch(ch)

{case '1':execv("task1.exe",argv);

case '2':execv("task2.exe",argv);

case '3':execv("3.exe",argv);

case 'q':exit(1);

default:cout<<"net"<<endl;break;}}

//execv(@rever/exe@?argv)$

return 0; }

#include<iostream.h>

#include<math.h>

void main()

{float x,y;int i;

for(i=0;i<=20;i++)

{x=i*0.157;

y=sin(x);

cout<<x<<" "<<y<<endl;}

cout<<endl;

}

#include<iostream.h>

#include<math.h>

#include<iomanip.h>

void main()

{float x,y; int i;

for(i=0;i<=20;i++)

{x=i*0.157;

y=cos(x);

cout<<setw(5)<<setprecision(3)<<x<<setw(8)<<setprecision(3)<<y<<endl;}

cout<<endl;

}

Биролшемди дин. Массив

Мысал 10.1 – Программаларда new және delete операторын қолдану.

#include<iostream.h>

void main()

{int *p;

p=new int; // жадыны бөлу

*p=55; // сол облысқа 55 орнату

cout<<*p<<endl; // экранға шығару

delete p;} // жадыны босату

Мысал 10.2 – Динамикалық ерекшелеген жадыны инициализациялау.

//initial memory

#include<iostream.h>

void main()

{int *p;

p=new int (345); // жадыны инициализациялау

cout<<*p<<endl;

delete p;}

Мысал 10.3 – Жадыны массивтерге ерекшелеп беру.

//dinamic memory for odnomerny massiv

#include<iostream.h>

void main()

{int *p; int i;

p=new int [10]; // массивтің 10-элементіне жады

for(i=0;i<10;i++) p[i]=10+i; // массивті толтыру

for(i=0;i<10;i++) cout<<p[i]<<" "; // массивті экранға шығару

cout<<endl;

delete []p;} // массивті жою

Динамикалық массивті құрудың бірнеше түрі бар. Ең ыңғайлылардың бірі – массивтің екі өлшемі де программаны орындау барысында берілгені.

Мысал 10.4 – Екі өлшемді динамикалық массивті құрудың бір түрі.

//dinamic memory for 2-merny massiv

#include<iostream.h>

void main()

{ int nrow, ncol, i,j;

cout<<"enter count rows and columns"<<endl;

cin>>nrow>>ncol;

int**a=new int *[nrow];

for(i=0;i<nrow;i++)

a[i]=new int[ncol];

for(i=0;i<nrow;i++)

for(j=0;j<ncol;j++)

cin>>a[i][j];

for(i=0;i<nrow;i++){

for(j=0;j<ncol;j++)

cout<<a[i][j]<<" ";

cout<<endl;} cout<<endl; }

Определим затраты времени на перемещение одного файла Тп которые складывается из времени чтние файла. Тч и времени записи Тз файла т.е. Тп=Тч+Тз. Каждая из этих составляющих в свою очеред, складывается из времени пуска нужного цилиндра tц времени задержки вращение диска Тз и вращени tч чтения файла. Последнюю составляющися можно определит зная размер файла Еф и скоростьV передачи данных при чтени записи с учетом введенных обозночений затраты времени на перемещени одного файла можно найти из выражения Тп=Тч+Тз=2(tц+tв+Еф/v)=2(5+4+ (8кБайт/8Мбайт/с))=2(9+(8*210/8*220/1000))мс=19,95мс. Определим сколько файлов Nф потребуется переместит для уплатнение половины 16гб диска Nф=0.5*Ед/Еф=0,5*16гб/8кб=2^20=1048576. Время необходимое уплатненние половины диска находим умножением диска перемещаемых файлов на время затрачиваемое на перемещение одного файла Т=Nф*Тп=1048576*19,95мс=5,81 часа

При известном времени записи слова в аппаратуру для определение времени копирования таблицы страниц нужно знать число слов в таблице. Оно должно быть равно числу виртуальных страниц в виртуальном адресном пространства Ев определяется. Следовательно Ев=2^32 байт. При заданным размере станицы Естр=8кб число виртуальных страниц Nстр=Еп/Естр=2^32/2^13=2^19. Теперь можно найти время копирования таблицы страниц в аппаратуру Ткоп=tкоп*Nстр=10*2^19нс=542880нс. Так как процесс работает в течении 100мс, то доля времени процессора, затрачиваемая на загрузку таблицы будет равна Δ=(Ткоп*Тпроц)*100%=5.24/100*100%=5.24%

ресурс

#include<iostream.h>

#include<conio.h>

#include<stdlib.h>

#include<math.h>

void main()

{clrscr(); randomize();

int z,a[10][10],n[10],q[10][10], b[10][10], c[10][10], v[10][10],i ,j,k,l,m[10];

cout<<"Kolichestvo processov= ";

cin>>k; cout<<"Kolichestvo resursov= ";cin>>l;

cout<<"1. Generator sluchainih chisel "<<endl;

cout<<"2. Ruchnoi rejim " ;

cin>>z; if(z==1){ for(i=0;i<k;i++)

{for(j=0;j<l;j++) {a[i][j]=random(10);

cout<<a[i][j]<<" "; }

cout<<endl;}

cout<<"Maksimal'nye trebovanie:" <<endl;

for(i=0;i<k;i++) {for(j=0;j<l;j++){

b[i][j]=random(15);

cout<<b[i][j]<<" ";}

cout<<endl;} cout<<"Kolichestvo dostupnih resursov: "<<endl;

for(j=0;j<l;j++) { v[0][j]=random(9);

cout<<" "<<v[0][j]; } cout<<"\n\n";}

if(z==2){ cout<<" Kolichestvo predostavlennih resursov "<<endl;

for(i=0;i<k;i++) for(j=0;j<l;j++)

cin>>a[i][j]; cout<<"Kolichestvo maksimalno trebuemih resursov "<<endl;

for(i=0;i<k;i++) for(j=0;j<l;j++)

cin>>b[i][j]; cout<<"Kolichestvo dostupnih resursov:"<<endl;

for(j=0;j<l;j++) cin>>v[0][j]; }

cout<<"Kolichestvo trebuemih resursov:"<<endl;{

c[i][j]=0; for(i=0;i<l;i++) for(j=0;j<l;j++) c[i][j]=b[i][j]-a[i][j];

for(i=0;i<k;i++) {for(j=0;j<l;j++)

cout<<c[i][j]<<" "; cout<<endl; }}

cout<<"Resultat:"<<endl;

for(i=0;i<k;i++){ m[i]=0; for(j=0;j<l;j++){ if(v[i][j]>c[i][j]) cout<<i+1<<"Process vipolniaetca ";m[i]++; }

if(m[i]==l) for(j=0;j<l;j++)

{ v[i+1][j]=a[i][j]+v[i][j]; cout<<" "<<v[i+1][j]; }else

{ cout<<i+1<<" Process ne vipolniaetca "; for(j=0;j<l;j++){ v[i+1][j]=v[i][j];}

}cout<<endl;}getch();}

Ресурс арип # include <iostream.h>

# include <conio.h>

# include <string.h>

#include<stdlib.h>

void main()

{ clrscr (); int i,j; char s[100],v[100],m,k;

for(m='A',i=0; m<='F'; m++,i++)

{ cout<<"Processi "<<m<<endl;

cout<<"Process zanimaiushi resurs: ";

cin>>s[i]; cout<<"Process hochet poluchit: "; cin>>v[i]; cout<<"\n";

} int o; for(m='A',j=0;m<='F';m++,j++)

{ o=0; for(i=0;i<3;i++) {

if(v[j]==s[i]) o++; } if(o<1)

cout<<"Process vipolniaetca!!!";

else cout<<"Process ne vipolniaetca!!!";

cout<<endl; } getch(); }

сортировка#include<iostream.h>

#include<conio.h>

#include<stdlib.h>

void main() {clrscr();

randomize();

int *x,i,j,imin,jmin,min;

x=new int [10];

cout<<"VVedite massiv"<<endl;

for(i=0;i<10;i++)

x[i]=random(100);

for (i=0;i<10;i++)

cout<<x[i]<<" ";

cout<<endl; for (i=0;i<10;i++) {

min=x[i];imin=i; for(j=i+1;j<10;j++)

if(x[j]<min){min=x[j];jmin=j; }

x[jmin]=x[i]; x[i]=min; }

cout<<"Otsortirovannyi massiv"<<endl;

for(i=0;i<10;i++) cout<<x[i]<<" ";

cout<<endl; getch(); }

Про-нышакыру #include<iostream.h>

#include<process.h>

#include<errno.h>

#include<conio.h>

#include<math.h>

int main(char*argv[])

{clrscr(); char ch;

cout<<"zada4a: pow(cos,2)+pow(sin,2) 1"<<endl;

cout<<"zada4a: sin 2"<<endl;

cout<<"zada4a: cos+sin 3"<<endl;

cout<<"to quit: q"<<endl;

cin>>ch; while(ch!='q')

{switch(ch)

{case'1':execv("1.exe",argv);

case'2':execv("2.exe",argv);

case'3':execv("3.exe",argv);

case'q':exit;

break;}} return 0;}

(5,7)массив #include<iostream.h>

#include<conio.h> #include<fstream.h>

#include<stdio.h> #include<time.h>

#include<stdlib.h>

void r(int n,int m)

{clrscr(); int d[18][18];

int i,j,l,sum=0;

cout<<" massiv:"<<endl;

for(i=0;i<n;i++){ for(j=0;j<m;j++)

d[i][j]=1+rand()%9;} for(i=0;i<n;i++){

for(j=0;j<m;j++) cout<<d[i][j]<<" ";

cout<<endl;} for(i=0;i<n;i++){

for(j=0;j<m;j++) sum=sum+d[j][i];

cout<<"sum("<<i+1<<")="<<sum<<endl; sum=0;}} void main() { r(5,7); getch();}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]