- •Курсовая работа по дисциплине «Операционные системы»
- •Глава 1. 6
- •Глава 2. 9
- •Глава 3. Обеспечение синхронизации процессов посредством семафоров. 24
- •Задание.
- •Операционные системы семейства Windows. Введение
- •Глава 1.
- •Глава 2.
- •Поколение 9х
- •Поколение nt
- •Заключение
- •Глава 3. Обеспечение синхронизации процессов посредством семафоров.
- •Список использованных источников
- •Приложение 1
- •Приложение 2
Приложение 1
#include<stdio.h>
#include<conio.h>
#include<windows.h>
/*------------------------------------------------*/
void printrusb(char string[100],int a)
{ char buf[100]; /* буфер обмена для вывода русских букв в консоль */
CharToOem(string, buf);/* преобразование букв */
printf(buf);//Выводим русские буквы
if (a == 1) {puts("\n");}//Выводим перевод строки
};
int st_stop(char string[100],int a)
{
FILE *f;
int d;
f=fopen(string,"rt"); // открываем файл для считывания
if (f!=NULL)
{
fscanf(f,"%d",&d);// считываем содержимое файла
if (d==a)
{
fclose(f); // закрываем файл
f=fopen(string,"wt"); // открываем файл для записи
fprintf(f,"%d",a+1);// записываем в файл 1
fclose(f); // закрываем файл
printf("%s = %d\n",string,a+1);
return 1;
}
else
{
if (a==2)
{
fclose(f); // закрываем файл
f=fopen(string,"wt"); // открываем файл для записи
fprintf(f,"%d",a);// записываем в файл 1
fclose(f); // закрываем файл
printf("%s = %d\n",string,a);
}
return 0;
}
}
else printrusb("Файла нет",1);
return 0;
}
void zapis(char string[100],char a[50])
{
FILE *f;
int d;
f=fopen(string,"wt"); // открываем файл для записи
if (f!=NULL)
{
fprintf(f,"%s",a);// записываем в файл
fclose(f); // закрываем файл
printrusb("В файл ",0);printf("%s",string);printrusb(" записана строка: ",0);printf("%s\n",a);
}
else printrusb("Файла нет",1);
}
int main()// программа производитель
{
int b;
char a='0';
char chars[50]="";
while (a!='a')
{ getch();
b=st_stop("semaphore.txt",0);
getch();
if(b==1)
{
printrusb("Введите строку: ",0);
scanf("%s",&chars);
zapis("res.txt",chars);
getch();
st_stop("semaphore.txt",2);
}
else printrusb("Очередность у другого процесса",1);
printrusb("Для завершения нажмите на букву а, для продолжения на любую другую клавишу",1);
a=getch();
}
return 0;
}
Приложение 2
#include<stdio.h>
#include<conio.h>
#include<windows.h>
/*------------------------------------------------*/
void printrusb(char string[100],int a)
{ char buf[100]; /* буфер обмена для вывода русских букв в консоль */
CharToOem(string, buf);/* преобразование букв */
printf(buf);//Выводим русские буквы
if (a == 1) {puts("\n");}//Выводим перевод строки
};
int st_stop(char string[100],int a)
{
FILE *f;
int d;
f=fopen(string,"rt"); // открываем файл для считывания
if (f!=NULL)
{
fscanf(f,"%d",&d);// считываем содержимое файла
if (d==a)
{fclose(f); // закрываем файл
f=fopen(string,"wt"); // открываем файл для записи
fprintf(f,"%d",a+1);// записываем в файл 1
fclose(f); // закрываем файл
printf("%s = %d\n",string,a+1);
return 1;
}
else
{
if (a==0)
{
fclose(f); // закрываем файл
f=fopen(string,"wt"); // открываем файл для записи
fprintf(f,"%d",a);// записываем в файл 1
fclose(f); // закрываем файл
printf("%s = %d\n",string,0);
}
return 0;
}
}
else printrusb("Файла нет",1);
return 0;
}
void schit(char string[100])
{
FILE *f;
char a[50];
int d;
f=fopen(string,"rt"); // открываем файл для записи
if (f!=NULL)
{
fscanf(f,"%s",&a);// считываем содержимое файла
fclose(f); // закрываем файл
printrusb("В файле ",0);printf("%s",string);printrusb(" записана строка: ",0);printf("%s\n",a);
}
else printrusb("Файла нет",1);
}
int main()// программа производитель
{
int b;
char a='0';
char chars[50]="";
while (a!='a')
{
getch();
b=st_stop("semaphore.txt",2);
getch();
if(b==1)
{schit("res.txt");
getch();
st_stop("semaphore.txt",0);
}
else printrusb("Очередность у другого процесса",1);
printrusb("Для завершения нажмите на букву а, для продолжения на любую другую клавишу",1);
a=getch();
}
return 0;
}
