Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Порядок выполнения работы. 3.1. Ознакомиться с синтаксом и особенностями работы перечисленных в предыдущем пункте системных вызовов API процессов.

Читайте также:
  1. D. Требования к структуре и оформлению курсовой работы.
  2. E. Порядок защиты курсовой работы.
  3. Gl] Тема 9.Законность и правопорядок. Мировой правопорядок
  4. I ОРГАНИЗАЦИОННО-МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ КУРСОВОЙ РАБОТЫ
  5. I Принцип работы клавиатур
  6. I. ОБЩИЕ ПОЛОЖЕНИЯ ПО ВЫПОЛНЕНИЮ КОНТРОЛЬНОЙ РАБОТЫ
  7. I. Общие рекомендациик написанию курсовой работы
  8. I. Основные задачи и направления работы библиотеки
  9. I. ОСНОВНЫЕ ПОЛОЖЕНИЯ. РУКОВОДСТВО ПОДГОТОВКОЙ И НАПИСАНИЕМ КУРСОВОЙ РАБОТЫ
  10. I. Теоретическая часть лабораторной работы

3.1. Ознакомиться с синтаксом и особенностями работы перечисленных в предыдущем пункте системных вызовов API процессов.

3.2. Откомпилировать и выполнить несколько раз подряд программу, текст которой приведен ниже. Привести и объяснить в отчете получаемые на экране результаты.

Текст программы "forktest.c":

 

#include <stdio.h>

#include <unistd.h>

 

main()

{

int i;

 

if(fork())

for (i=0;i<10;i++) printf("I am a parent…\n");

else

for (i=0;i<10;i++) printf("I am a child!\n");

}

 

 

3.3. Откомпилировать и выполнить вторую программу, результат выполнения с комментариями также поместить в отчет.

Текст программы "addrspace.c":

 

#include <stdio.h>

 

static int data1;

static unsigned long code, data, extend, stack;

main(int argc, char *argv[], char *envp[])

{

int data2;

printf("Addr of first env. var.: %08x\n", envp[0]);

printf("Addr of printf: %08x\n",printf);

printf("Addr of main: %08x\n",main);

printf("Addr of data1: %08x\n",&data1);

printf("Addr of data2: %08x\n",&data2);

printf("------------------------------------------\n");

asm ("movl %cs, code");

asm ("movl %ds, data");

asm ("movl %es, extend");

asm ("movl %ss, stack");

printf(" CS: %04x\n",code);

printf(" DS: %04x\n",data);

printf(" ES: %04x\n",extend);

printf(" SS: %04x\n",stack);

}

 

3.4. Написать на языке Си функцию procinfo(), выводящую на экран в компактной форме следующую информацию о текущем процессе:

- идентификаторы: PID, PPID, UID, GID, SID, PGID

- управляющий терминал

- кол-во открытых файлов

- текущий каталог

- строку запуска программы

- текущий приоритет

- маску создания файлов

- карту виртуальной памяти процесса следующего вида:

 

Сегмент Код Данные Стек Среда
Начало Xxxxx Xxxxx Xxxxx Xxxxx
Конец Xxxxx Xxxxx Xxxxx Xxxxx

 

3.5. Откомпилировать функцию procinfo() в одноименную выполняемую программу.

3.6. Написать программу, которая работает по следующему сценарию:

1) вызвать функцию procinfo()

2) породить новый процесс и в нем запустить программу procinfo

3) ждать завершения процесса-потомка с помощью вызова wait()

4) породить для запуска procinfo() новый поток выполнения

5) ждать завершения порожденного потока

6) завершить работу.

 

Содержание отчета

4.1. Синтаксис и краткое описание изученных системных вызовов.

4.2. Исходные тексты и результаты выполнения программ п. 3.2 - 3.6 с комментариями.

 

5. Конторльные вопросы

Лабораторная работа N8

Интерфейс прикладного программирования ОС UNIX:

Сигналы и управление процессами

 

 

Цель работы

Изучение программного интерфейса сигналов а также механизмов посылки, получения и обработки сигналов процессами.

 




Дата добавления: 2014-12-19; просмотров: 106 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.238 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав