У вас вопросы?
У нас ответы:) SamZan.net

задание По дисциплине- Операционные системы Выполнил студент Группы Проверил- А1

Работа добавлена на сайт samzan.net: 2016-03-30

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 6.4.2025

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

Волгоградский государственный технический университет

Кафедра «Cистемы автоматизированного проектирования и

поискового конструирования»

Семестровое задание

По дисциплине: «Операционные системы»

Выполнил студент

Группы __________

Проверил:

Албегов Е.В.

Волгоград 2013 г.

Задание 1.

Привести краткую сравнительную характеристику операционных систем семейства Windows и Linux в виде сводной таблицы.

Задание 2.

Изучение практической реализации потоков выполнения и синхронизации в ОС на примере программы с использованием многопоточности:

#include <pthread.h>

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#include <unistd.h>

#define NUM_THREADS 6

void *thread_function(void *arg);

int main() {

int res;

int lots_of_threads;

pthread_t a_thread[NUM_THREADS];

void *thread_result;

srand ( (insigned)time(NULL) );

for (lots_of_threads = 0; lots_of_threads < NUM_THREADS;

lots_of_threads++)

{

res = pthread_create (&(a_thread[lots_of_threads]),NULL,

thread_function, (void *)&lots_of_threads);

if (res != 0) {

perror(“Thread creation failed”);

exit(EXIT_FAILURE);

}

}

printf(“Waiting for threads to finish...\n”);

for (lots_of_threads = NUM_THREADS - 1; lots_of_threads >= 0;

lots_of_threads--)

{

res = pthread_join (a_thread[lots_of_threads],&thread_result);

if (res == 0) printf(“Picked up a thread\n”);

else perror(“pthread_join failed”);

}

printf(“All done\n”);

exit(EXIT_SUCCESS);

}

void *thread_function(void *arg) {

int my_number = *(int *)arg;

int rand_num;

printf (“thread_function is running. Argument was %d\n”,

my_number);

rand_num=1+(int)(9.0*rand()/(RAND_MAX+1.0));

printf (“Bye from %d\n”, my_number);

pthread_exit(NULL);

}

Задачи:

  1.  Изучение основных программных средств управления потоками в ОС.
  2.  Написание комментариев к представленному программному коду.

Задание 3.

Изучение практической реализации процессов и синхронизации в ОС на примере программы с использованием семафора:

#include <unistd.h>

#include <stdio.h>

#include <error.h>

#include <sys/types.h>

#include <sys/wait.h>

#include <sys/sem.h>

#include <sys/ipc.h>

#include <fcntl.h>

#include <time.h>

#include <iostream.h>

#define MAXLINE 128

#define SVSEM_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)

#define SKEY 1234L

union semun {

int val;

struct semid_ds *buf;

ushort *array;

};

int var;

int main(int argc, char **argv) {

char filename[] = "./rezult.txt";

pid_t pid;

time_t ctime;

int oflag, c, semid;

struct tm *ctm;

union semun arg;

struct semid_ds seminfo;

struct sembuf psmb;

unsigned short *prt = NULL;

var = 0;

oflag = SVSEM_MODE | IPC_CREAT;

printf("Parent: Creating semaphore...\n");

semid = semget(SKEY, 1, oflag);

arg.buf = &seminfo;

printf("Parent: Getting info about semaphore (not required, for

example)...\n");

semctl(semid, 0, IPC_STAT, arg);

g.buf->sem_ctime;

ctm = localtime(&ctime);

printf("%s %d %s %d %s %d %s","Parent: Creating time - ",

ctm->tm_hour,":",ctm->tm_min,":",ctm->tm_sec,"\n");

arg.val = 5;

printf("%s %d %s","Parent: Setting value \"",arg.val, "\" to

semaphores...\n");

semctl(semid, 0, SETVAL, arg);

printf("Parent: Creating child process...\n");

if ((pid = fork()) == 0) { // child process ;

printf(" Child: Child process was created...\n");

struct sembuf csmb;

unsigned short semval;

union semun carg;

int oflag = SVSEM_MODE | IPC_EXCL;

printf(" Child: Opening semaphore...\n");

int smd = semget(SKEY, 1, oflag); //

csmb.sem_num = 0;

csmb.sem_flg = 0;

csmb.sem_op = -1;

printf(" Child: Locking semaphore...\n");

semop(smd,&csmb,1);

printf(" Child: Do something...\n");

printf(" Child: Done something...\n");

carg.buf = NULL;

carg.array = &semval;

semctl(smd,0,GETALL,carg);

semval = *carg.array;

printf("%s %d %s"," Child: Semaphore value = ",semval,"\n");

csmb.sem_num = csmb.sem_flg = 0;

csmb.sem_op = -semval;

printf(" Child: Unlocking semaphore...\n");

semop(smd,&csmb,1);

printf(" Child: Terminating child process...\n");

exit(0);

}

printf("Parent: Waiting for unlocking semaphore...\n");

psmb.sem_num = psmb.sem_flg = psmb.sem_op = 0;

semop(semid,&psmb,1);

printf("Parent: Semaphore is unlocked...\n");

printf("Parent: Waiting for SIGCHILD...\n");

waitpid(pid,NULL,0);

printf("Parent: Deleting semaphore...\n");

semctl(semid, 0, IPC_RMID);

exit(0);

}

Задачи:

  1.  Изучение основных программных средств управления процессами в ОС.
  2.  Написание комментариев к представленному программному коду.




1. Особенности изучения фауны наземных позвоночных животных урбанизированных территорий
2. Открытая Россия руководитель Клуба региональной журналистики Бывший руководитель департамента обществ
3. Гомельский государственный университет имени Франциска Скорины Факультет физической культуры Кафед
4. реферату- Облік малоцінних та швидкозношуючих предметівРозділ- Бухгалтерський облік оподаткування Облік
5.  Загальною метою державних завдань в галузі культури та виховання можна визначити формування національної с
6. то неотложное занятие
7. Особенности редакторской подготовки к изданию пособия
8. Северный Арктический федеральный университет имени Ломоносова
9. Курсовая работа- Кредитование малого бизнеса.html
10. за контрреволюционную деятельность и отбывал наказание в лагерях ГУЛАГа в ужасных нечеловеческих услови