Основы операционных систем
Изучение теорий операционных систем. Исследование принципов построения и особенностей проектирования современных ОС. Сущность виртуальной памяти и алгоритма синхронизации. Рассмотрение операционной и файловой системы, система управления вводом-выводом.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | книга |
Язык | русский |
Дата добавления | 12.01.2010 |
Размер файла | 2,6 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
}
/* Устанавливаем логическое соединение через созданный сокет с сокетом сервера, адрес которого мы занесли в структуру */
if (connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0){
perror(NULL);
close(sockfd);
exit(1);
}
/* Три раза в цикле вводим строку с клавиатуры, отправляем ее серверу и читаем полученный ответ */ for(i=0; i<3; i++){
printf("String => "); fflush(stdin);
fgets(sendline, 1000, stdin)* if( (n = write(sockfd, sendline, strlen(sendline)+1)) < 0){
perror("Can\'t write\n");
close(sockfd);
exit(1) ;
}
if ( (n = read(sockfd,recvline, 999)) < 0){ perror("Can\1t read\n"); close(sockfd); exit(1) ;
)
printf("%s", recvline);
}
/* Завершаем соединение */ close(sockfd);
}
Наберите и откомпилируйте программу. Перед запуском узнайте у своего системного администратора, запущен ли в системе стандартный TCP-сервис echo и, если нет, попросите это сделать. Запустите программу с запросом к сервису своего компьютера, к сервисам других компьютеров. Если в качестве IP-адреса указать несуществующий адрес или адрес выключенной машины, то программа сообщит об ошибке при работе вызова connect () (правда, возможно, придется подождать окончания time-out'a). При задании адреса компьютера, на котором не работает сервис echo, об ошибке станет известно сразу же. Протокол TCP является надежным протоколом. Если логическое соединение установить не удалось, то отправитель будет знать об этом.
Как происходит установление виртуального соединения
Протокол TCP является надежным дуплексным протоколом. С точки зрения пользователя работа через протокол TCP выглядит как обмен информацией через поток данных. Внутри сетевых частей операционных систем поток данных отправителя нарезается на пакеты данных, которые, собственно, путешествуют по сети и на машине-получателе вновь собираются в выходной поток данных. В лекции 4 речь шла о том, каким образом может обеспечиваться надежность передачи информации в средствах связи, использующих в своей основе передачу пакетов данных. В протоколе TCP используются приемы нумерации передаваемых пакетов и контроля порядка их получения, подтверждения о приеме пакета со стороны получателя и насчет контрольных сумм по передаваемой информации. Для правильного порядка получения пакетов получатель должен знать начальный номер первого пакета отправителя. Поскольку связь является дуплексной, и в роли отправителя пакетов данных могут выступать обе взаимодействующие стороны, они до передачи пакетов данных должны обменяться, по крайней мере, информацией об их начальных номерах. Согласование начальных номеров происходит по инициативе клиента при выполнении системного вызова connect ().
Для такого согласования клиент посылает серверу специальный пакет информации, который принято называть SYN (от слова synchronize -- синхронизировать). Он содержит, как минимум, начальный номер для пакетов данных, который будет использовать клиент. Сервер должен подтвердить получение пакета SYN от клиента и отправить ему свой пакет SYN с начальным номером для пакетов данных, в виде единого пакета с сегментами SYN и АСК (от слова acknowledgement -- подтверждение). В ответ клиент пакетом данных АСК должен подтвердить прием пакета данных от сервера.
Описанная выше процедура, получившая название трехэтапного рукопожатия (three-way handshake), схематично изображена на рисунке 14-15.8. При приеме на машине-сервере пакета SYN, направленного на пассивный (слушающий) сокет, сетевая часть создает операционной системе копию этого сокета -- присоединенный сокет -- для последующего общения, отмечая его как сокет сне полностью установленным соединением. После приема от клиента пакета АСК этот сокет переводится в состояние полностью установленного соединения, и тогда он готов к дальнейшей работе с использованием вызовов read () и write ().
Системный вызов listen()
Системный вызов listen () является первым из еще неизвестных нам вызовов, применяемым на TCP-сервере. В его задачу входит перевод ТСР-сокета в пассивное (слушающее) состояние и создание очередей для порождаемых при установлении соединения присоединенных сокетов, находящихся в состоянии не полностью установленного соединения и полностью установленного соединения. Для этого вызов имеет два параметра: дескриптор ТСР-сокета и число, определяющее глубину создаваемых очередей.
Клиент
Сервер
Начало вызова connectQ
Создание присоединенного сокета в очереди не полностью установленных соединений
Перевод присоединенного сокета в очередь полностью установленных соединений
Рис. 14-15.8. Схема установления ТСР-соединения
Системный вызов listen()
Прототип системного вызова
#include <sys/types.h>
#include <sys/socket.h>
int listen{int sockd, int backlog);
Описание системного вызова
Системный вызов listen используется сервером, ориентированным на установление связи путем виртуального соединения, для перевода сокета в пассивный режим и установления глубины очереди для соединений.
Параметр sockd является дескриптором созданного ранее сокета, который должен быть переведен в пассивный режим, т. е. значением, которое вернул системный вызов socket (). Системный вызов 1 i st en требует предварительной настройки адреса сокета с помощью системного вызова bind ().
Параметр backlog определяет максимальный размер очередей для сокетов, находящихся в состояниях полностью и не полностью установленных соединений.
Возвращаемое значение
Системный вызов возвращает значение 0 при нормальном завершении и значение -1 при возникновении ошибки.
Последний параметр на разных UNIX-подобных операционных системах и даже на разных версиях одной и той же системы может иметь различный смысл. Где-то это суммарная длина обеих очередей, где-то он относится к очереди не полностью установленных соединений (например, Linux до версии ядра 2.2) где-то -- к очереди полностью установленных соединений (например, Linux, начиная с версии ядра 2.2), где-то -- вообще игнорируется.
Системный вызов accept()
Системный вызов accept () позволяет серверу получить информацию о полностью установленных соединениях. Если очередь полностью установленных соединений не пуста, то он возвращает дескриптор для первого присоединенного сокета в этой очереди, одновременно удаляя его из очереди. Если очередь пуста, то вызов ожидает появления полностью установленного соединения. Системный вызов также позволяет серверу узнать полный адрес клиента, установившего соединение. У вызова есть три параметра: дескриптор слушающего сокета, через который ожидается установление соединения; указатель на структуру, в которую при необходимости будет занесен полный адрес сокета клиента, установившего соединение; указатель на целую переменную, содержащую максимально допустимую длину этого адреса. Как и в случае вызова recvfromO, последний параметр является модернизируемым, а если нас не интересует, кто с нами соединился, то вместо второго и третьего параметров можно указать значение NULL.
Системный вызов accept()
Прототип системного вызова
#include <sys/types.h> #include <sys/socket.h>
int accept(int sockd, struct sockaddr *cliaddr, int *clilen);
Описание системного вызова
Системный вызов accept используется сервером, ориентированным на установление связи путем виртуального соединения, для приема полностью установленного соединения.
Параметр sockd является дескриптором созданного и настроенного сокета, предварительного переведенного в пассивный (слушающий) режим с помощью системного вызова listen ().
Системный вызов accept требует предварительной настройки адреса сокета с помощью системного вызова bind().
Параметр cliaddr служит для получения адреса клиента, установившего логическое соединение, и должен содержать указатель на структуру, в которую будет занесен этот адрес.
Параметр с 1 i 1 en содержит указатель на целую переменную, которая после возвращения из вызова будет содержать фактическую длину адреса клиента. Заметим, что перед вызовом эта переменная должна содержать максимально допустимое значение такой длины. Если параметр cliaddr имеет значение NULL, то и параметр clilen может иметь значение NULL.
Возвращаемое значение
Системный вызов возвращает при нормальном завершении дескриптор присоединенного сокега, созданного при установлении соединения для последующего общения клиента и сервера, и значение -1 при возникновении ошибки.
Пример простого ТСР-сервера
Рассмотрим программу 14--15-4.С, реализующую простой ТСР-сер-вер для сервиса echo:
/* Пример простого TCP-сервера для сервиса echo */
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>
#include <unistd.h>
void main()
{
int sockfd, newsockfd; /* Дескрипторы для
слушающего и присоединенного сокетов */
int clilen; /* Длина адреса клиента */
int п; /* Количество принятых символов */
char line[1000]; /* Буфер для приема информации */
struct sockaddr_in servaddr, cliaddr; /* Структуры
для размещения полных адресов сервера и
клиента */ /* Создаем ТСР-сокет */
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0){ perror(NULL); exit(1);
/* Заполняем структуру для адреса сервера: семейство протоколов TCP/IP, сетевой интерфейс - любой, номер порта 51000. Поскольку в структуре содержится дополнительное не нужное нам поле, которое должно быть нулевым, обнуляем ее всю перед заполнением */ bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family= AF_INET; servaddr.sin_port= htons(51000); servaddr.sin_addr.s_addr = htonl(INADDR_ANY); /* Настраиваем адрес сокета */
іf(bind(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0){
perror(NULL);
close(sockfd);
exit (1) ;
}
/* Переводим созданный сокет в пассивное (слушающее) состояние. Глубину очереди для установленных соединений описываем значением 5 */ if (listenfsockfd, 5) < 0){
perror(NULL);
close(sockfd);
exit (1) ;
}
/* Основной цикл сервера */ while(l){
/* В переменную clilen заносим максимальную длину ожидаемого адреса клиента */ clilen = sizeof(cliaddr);
/* Ожидаем полностью установленного соединения на слушающем сокете. При нормальном завершении у нас в структуре cliaddr будет лежать полный адрес клиента, установившего соединение, а в переменной clilen - его фактическая длина. Вызов же вернет дескриптор присоединенного сокета, через который будет происходить общение с клиентом. Заметим, что информация о клиенте у нас в дальнейшем никак не используется, поэтому вместо второго и третьего параметров можно было поставить значения NULL. */ if((newsockfd = accept(sockfd,
(struct sockaddr *) &cliaddr, &clilen)) < 0){
perror(NULL); close(sockfd); exit(1);
}
/* В цикле принимаем информацию от клиента до тех пор, пока не произойдет ошибки (вызов read() вернет отрицательное значение) или клиент не закроет соединение (вызов read() вернет значение 0). Максимальную длину одной порции данных от клиента ограничим 999 символами. В операциях чтения и записи пользуемся дескриптором присоединенного сокета, т. е. значением, которое вернул вызов accept().*/
while((n = read(newsockfd, line, 999)) > 0){ /* Принятые данные отправляем обратно */ if((n = write(newsockfd, line, strlen(line)+1)) < 0){
perror(NULL);
closet sockfd) ;
close(newsockfd);
exit(1) ;
}
}
/* Если при чтении возникла ошибка - завершаем работу */ if(п < 0){
perror(NULL);
close(sockfd);
close(newsockfd);
exit(1);
}
/* Закрываем дескриптор присоединенного сокета и уходим ожидать нового соединения */ close(newsockfd);
}
}
Наберите и откомпилируйте программу. Запустите ее на выполнение. Модифицируйте текст программы ТСР-клиента (программа 14-- 15-З.с), заменив номер порта с 7 на 51000. Запустите клиента с другого виртуального терминала или с другого компьютера и убедитесь, что клиент и сервер взаимодействуют корректно.
Создание программы с параллельной обработкой запросов клиентов
В приведенном выше примере сервер осуществлял последовательную обработку запросов от разных клиентов. При таком подходе клиенты могут подолгу простаивать после установления соединения, ожидая обслуживания. Поэтому обычно применяется схема псевдопараллельной обработки запросов. После приема установленного соединения сервер порождает процесс-ребенок, которому и поручает дальнейшую работу с клиентом. Процесс-родитель закрывает присоединенный сокет и уходит на ожидание нового соединения. Схематично организация такого сервера изображена на рис. 14-15.9.
Напишите, откомпилируйте и запустите такой параллельный сервер. Убедитесь в его работоспособности. Не забудьте о необходимости удаления зомби-процессов.
Применение интерфейса сетевых вызовов для других семейств протоколов. UNIX Domain протоколы. Файлы типа «сокет»
Рассмотренный нами интерфейс умеет работать не только со стеком протоколов TCP/IP, но и с другими семействами протоколов. При этом требуется лишь незначительное изменение написанных с его помощью программ. Рассмотрим действия, которые необходимо выполнить для модернизации написанных для TCP/IP программ под другое семейство протоколов:
Изменяется тип сокета, поэтому для его точной спецификации нужно задавать другие параметры в системном вызове socket ().
В различных семействах протоколов применяются различные адресные пространства для удаленных и локальных адресов сокетов. Поэтому меняется состав структуры для хранения полного адреса сокета, название ее типа, наименования полей и способ их заполнения.
Описание типов данных и предопределенных констант будет находиться в других include-файлах, поэтому потребуется заменить include-файлы <netinet/in.h> и <агра/inet.h> на файлы, относящиеся к выбранному семейству протоколов.
Может измениться способ вычисления фактической длины полного адреса сокета и указания его максимального размера.
И все!!!
Давайте подробнее рассмотрим эти изменения на примере семейства UNIX Domain протоколов. Семейство UNIX Domain протоколов предназначено для общения локальных процессов с использованием интер фейса системных вызовов. Оно содержит один потоковый и один дата-граммный протокол. Никакой сетевой интерфейс при этом не используется, а вся передача информации реально происходит через адресное пространство ядра операционной системы. Многие программы, взаимодействующие и с локальными, и с удаленными процессами (например, Х-\ЭДпс!о\у8), для локального общения используют этот стек протоколов.
Процесс-ребенок
Закрытие пассивного сокета
Ожидание получения информации. Чтение информации
Обработка информации
Отправление ответа
Завершение соединения. Закрытие присоединенного сокета
closeQ
read ()
writeQ
cIose()
Закрытие присоединенного сокета
closeQ
Окончание работы
exit()
Рис. 14-15.9. Схема работы ТСР-сервера с параллельной обработкой запросов
Поскольку общение происходит в рамках одной вычислительной системы, в полном адресе сокета его удаленная часть отсутствует. В качестве адресного пространства портов -- локальной части адреса -- выбрано адресное пространство, совпадающее с множеством всех допустимых имен файлов в файловой системе.
При этом в качестве имени сокета требуется задавать имя несуществующего еще файла в директории, к которой у вас есть права доступа как на запись, так и на чтение. При настройке адреса (системный вызов bind()) под этим именем будет создан файл типа «сокет» -- последний еще неизвестный нам тип файла. Этот файл для сокетов играет роль файла-метки типа FIFO для именованных pip'oe. Если на вашей машине функционируют Х-Windows, то вы сможете обнаружить такой файл в директории с именем /стр/ . Xll-unix -- это файл типа «сокет», служащий для взаимодействия локальных процессов с оконным сервером.
Для хранения полного адреса сокета используется структура следующего вида, описанного в файле <sys/un. h>:
struct sockaddr __un{
short sun_family; /* Избранное семейство
протоколов - всегда AF_UNIX */ char sun_path[108]; /* Имя файла типа "сокет" */
};
Выбранное имя файла мы будем копировать внутрь структуры, используя функциюstrcpy().
Фактическая длина полного адреса сокета, хранящегося в структуре с именем my_addr, может быть вычислена следующим образом: sizeof(short)+strlen(my_addr.sun_path). В Linux для этих целей можно использовать специальный макрос языка С:
SUN_LEN(struct sokaddr_un*)
Ниже приведены тексты переписанных подсемейство UNIX Domain протоколов клиента и сервера для сервиса echo (программы 14-- 15-5.c и 14--15-6.с), общающиеся через датаграммы. Клиент использует сокет с именем АААА в текущей директории, а сервер -- сокет с именем ВВВВ. Как следует из описания типа данных, эти имена (полные или относительные) не должны по длине превышать 107 символов. Комментарии даны лишь для изменений по сравнению с программами 14--15-l.c и 14-- 15-2.c.
/* A simple echo UNIX Domain datagrairan server */ #include <sys/types.h> #include <sys/socket.h>
#include <sys/un.h> /* Новый include-файл вместо
netinet/in.h и arpa/inet.h */ #include <string.h> #include <stdio.h> #include <errno.h> #include <unistd.h> int main() {
int sockfd; int clilen, n; char line[1000];
struct sockaddr_un servaddr, cliaddr; /* новый
тип данных под адреса сокетов */ if((sockfd = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0) /* Изменен тип семейства протоколов */
{
perror(NULL); exit (1) ;
}
bzero(&servaddr, sizeof(servaddr));
servaddr.sun_family = AF_UNIX; /* Изменен тип
семейства протоколов и имя поля в структуре */ strcpy(servaddr.sun_path,"ВВВВ"); /* Локальный
адрес сокета сервера - ВВВВ - в текущей директории */ if(bind(sockfd, (struct sockaddr *) &servaddr, SUN_LEN(&servaddr)) < 0) /* Изменено вычисление
фактической длины адреса */
{
perror(NULL); close(sockfd); exit(1);
}
while(l) {
clilen = sizeof(struct sockaddr_un); /* Изменено
вычисление максимальной длины для адреса клиента */ if((n = recvfrom(sockfd, line, 999, 0, (struct sockaddr *) &cliaddr, &clilen)) < 0){
perror(NULL);
close(sockfd) ;
exit(1);
}
if(sendto(sockfd, line, strlen(line), 0, (struct sockaddr *) &cliaddr, clilen) < 0){
perror(NULL); close(sockfd); exit(1);
}
}
return 0;
}
/* A simple echo UNIX Domain datagram client */ #include <sys/types.h> #include <sys/socket.h>
#include <sys/un.h> /* Новый include-файл вместо
netinet/in.h и arpa/inet.h */ #include <string.h> #include <stdio.h> #include <errno.h> #include <unistd.h>
int main() /* Аргументы командной строки не нужны, так как сервис является локальным, и не нужно
указывать, к какой машине мы обращаемся с запросом */
{
int sockfd; int n, len;
char sendline[1000], recvline[1000];
struct sockaddr_un servaddr, cliaddr; /* новый
тип данных под адреса сокетов */
if((sockfd = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0)
/* Изменен тип семейства протоколов */
{
perror(NULL); exit(1);
}
bzero(kcliaddr, sizeof(cliaddr));
cliaddr.sun_family= AF_UNIX; /* Изменен тип
семейства протоколов и имя поля в структуре */ strcpy(cliaddr.sun_path,"АААА");/* Локальный адрес
сокета клиента - АААА - в текущей директории */ if(bind(sockfd, (struct sockaddr *) kcliaddr, SUN_LEN(kcliaddr)) < 0) /* Изменено вычисление
фактической длины адреса */
{
perror(NULL);
close(sockfd); exit(1) ;
}
bzero(&servaddr, si zeof(servaddr));
servaddr.sun_family = AF_UNIX; /* Изменен тип
семейства протоколов и имя поля в структуре */ strcpy(servaddr.sun_path,"ВВВВ"); /* Локальный адрес
сокета сервера - ВВВВ - в текущей директории */ printf("String => "); fgets(sendline, 1000, stdin);
if(sendto(sockfd, sendline, strlen(sendline)+1, 0, (struct sockaddr *) &servaddr, SUN_LEN(&servaddr)) < 0) /* Изменено вычисление фактической длины адреса */
{
perror(NULL); close(sockfd); exit (1) ;
}
if((n = recvfrom(sockfd, recvline, 1000, 0, (struct sockaddr *) NULL, NULL)) < 0){
perror(NULL);
close(sockfd);
exit(1) ;
}
recvline[n] = 0 ; printf("%s", recvline); close(sockfd); return 0;
}
Наберите программы, откомпилируйте их и убедитесь в их работоспособности.
Создание потоковых клиента и сервера для стека UNIX Domain протоколов
По аналогии с программами в предыдущем примере модифицируйте тексты программ TCP клиента и сервера для сервиса echo (программы 14--15-3.с и 14-- 15-4.с) для потокового общения в семействе UNIX Domain протоколов. Откомпилируйте их и убедитесь в их правильном функционировании.
Литература
[Bach, 1986] [СС1ТТ, 1991]
[Denning, 1996] [DoD, 1993] [DTI, 1991]
[Intel, 1989] [Linnaes,1789]
[Ritchie,1984]
[Silberschatz, 2002]
[Stevens, 1990]
[Axo, 2001]
[Баурн,1986] [Беляков, 1991]
[Блэк, 2001] [Брамм, 1990] [Вахалия, 2003] [Дейтел, 1987] [Дунаев, 1996]
Bach M.J. The design of the UNIX Operating System.-- Prentice-Hall, 1986.
Security Architecture for Open Systems Interconnection for CCITT Applications. Recommendations X.800. CCITT. -Geneva. 1991.
Peter J. Denning. Before memory was virtual, Draft, June 6th 1996, at http://cne.gmu.edu/pjd/PUBS/bvm.pdf. Department of Defense. Trusted Computer System Evaluation Criteria. - DoD 5200.28, STD. 1993. Department of Trade and Industry. Information Technology Security Evaluation Criteria (ITSEC). Harmonized Criteria of France -- Germany -- the Netherlands -- the United Kingdom. - London. 1991. i486™ Microprocessor, Intel Corporation, 1989. Linnaeus. Karl, Systema naturae, 13lh ed., t. 1-3 - Lugduni, 1789-96
Ritchie D.M., The Evolution of the Unix Time-sharing System. // AT&T Bell Laboratories Technical Journal 63
No. 6, Part 2, October 1984 - pp. 1577-93. Silberschatz A., P.B.Galvin, Operating System Concepts, 6th edition. - John Willey & Sons, 2002.
Stevens R. W, Unix Network Programming -- Prentice Hall, Inc., 1990, First edition.
Axo В., Хопкрофт Д., Ульман Д. Структуры данных и алгоритмы. -- М.: Вильяме, 2001. Баурн С. Операционная система UNIX. -- М.: Мир. 1986. Беляков М.И., Рабовер Ю.И., Фридман А.Л. Мобильная операционная система. - М.:, Радио и связь, 1991.
Блэк У. Интернет: протоколы безопасности. Учебный курс. -- Спб.: Издательский дом Питер, 2001. Брамм П., Брамм Д. Микропроцессор 80386 и его применение. -- М., Мир, 1990.
Вахалия Ю. UNIX изнутри. -- Спб.: Издательский дом Питер, 2003.
Дейтел Г. Введение в операционные системы. -- М.: Мир, 1987.
Дунаев С. Unix. System V. Release 4.2. -- М.: Диалог МИФИ, 1996.
[Казаринов, 1990] Казаринов Ю.М., Номоконов В.М., Подклетнов Г.С., Филиппов Ф.М. Микропроцессорный комплекс К1810. - М.: Высшая школа, 1990.[Кастер, 1996] Кастер Хелен. Основы Windows NT и NTFS. -- М.:
Русская редакция.1996. [Керниган, 1992] Керниган Б. В., Пайк P. UNIX - универсальная среда программирования. - М.: Финансы и статистика. 1992. [Коффрон, 1983] Коффрон Дж. Технические средства микропроцессорных систем. -- М.: Мир, 1983.[Кузнецов] Кузнецов С.Д. Операционная система UNIX. - http://www.citforum.rU/operating_systems/unix/contents.s html.
[Олифер, 2000] Олифер В.Г., Олифер Н.А. Новые технологии и оборудование IP-сетей. -- Спб.: BHV, 2000. [Олифер, 2001] Олифер В.Г., Олифер Н.А. Сетевые операционные системы. -- Спб.: Издательский дом Питер, 2001. [Олифер, 2002] Олифер В.Г., Олифер Н.А. Компьютерные сети. Принципы, технологии, протоколы. -- Спб.: Издательский дом Питер, 2002. [Снейдер, 2001] Снейдер Й. Эффективное программирование TCP/IP. -- Издательский дом Питер, 2001. [Соломон, 2001] Соломон Д., Руссинович М. Внутреннее устройство Microsoft Windows 2000. -- СПб: Издательский дом Питер, М.: Русская редакция, 2001. [Стивене, 2002] Стивене У. UNIX: Взаимодействие процессов. -
СПб: Издательский дом Питер, 2002. [Стивене, 2003] Стивене У. UNIX: разработка сетевых приложений. --
СПб: Издательский дом Питер, 2003. [Столлингс, 2001] Столлингс В., Операционные системы. -- М.:
Вильяме, 2001.
[Таненбаум, 2002] Таненбаум Э. Современные операционные
системы. -- СПб.: Издательский дом Питер, 2002. [Таненбаум, 2003] Таненбаум Э. Компьютерные сети. - СПб.:
Издательский дом Питер, 2003. [Таненбаум II, 2003] Таненбаум Э., Ван Стеен М. Распределенные системы. Принципы и парадигмы. -- СПб.:
Издательский дом Питер, 2003. [Робачевский, 1999] Робачевский А. Операционная система UNIX. -- Спб.: BHV, 1999.
[Цикритис, 1977] Цикритис Д., Бернстайн Ф. Операционные системы. - М.: Мир. 1977.
Серия «Основы информационных технологий»
Серия учебных пособий «Основы информационных технологий» открыта в издательстве Интернет-Университета Информационных Технологий в 2003 году и предполагает издание более 100 книг. В настоящее время в ее рамках вышли более 30 учебных пособий по самым разным направлениям информационных и коммуникационных технологий. Авторами этой серии являются известные профессора и преподаватели ведущих российских вузов, а также представители компьютерного бизнеса и академической среды. Ряд учебных курсов создаются при активном участии и поддержке ведущих отечественных и иностранных компаний, а также общественных организаций и коммерческих ассоциаций в области информационных технологий.
Книги серии
1. Основы Web-технологий,
П.Б. Храмцови др., 2003, 512 с, ISBN 5-9556-0001-9.
2. Основы сетей передачи данных,
В.Г. Олифер, Н.А. Олифер, 2005, 176 с, ISBN 5-9556-0035-3.
Основы информационной безопасности, 2-е издание, В.А. Галатенко, 2004, 264 с, ISBN 5-9556-0015-9.
Основы микропроцессорной техники, 2-е издание, Ю.В. Новиков, П.К. Скоробогатов, 2004, 440 с, ISBN 5-9556-0016-7.
Язык программирования Си++, 2-е издание, АЛ. Фридман, 2004, 264 с, ISBN 5-9556-0017-5.
Программирование на Java,
Н.А. Вязовик, 2003, 592 с, ISBN 5-9556-0006-Х.
7. Стандарты информационной безопасности,
В.А. Галатенко, 2004, 328 с, ISBN 5-9556-0007-8.
8. Основы функционального программирования,
Л.В. Городняя, 2004, 280 с, ISBN 5-9556-0008-6.
9. Программирование в стандарте POSIX,
В.А. Галатенко, 2004, 560 с, ISBN 5-9556-0011-6.
10. Введение в теорию программирования,
СВ. Зыков, 2004, 400 с, ISBN 5-9556-0009-4.
11. Основы менеджмента программных проектов,И.Н. Скопин, 2004, 336 с, ISBN 5-9556-0013-2.
12. Основы операционных систем, 2-е издание,
В.Е. Карпов, К.А. Коньков, 2004, 536 с, ISBN 5-9556-0044-2.
13. Основы SQL,
Л.Н. Полякова, 2004, 368 с, ISBN 5-9556-0014-0.
14. Архитектуры и топологии многопроцессорныхвычислительных систем,
А.В. Богданов, В.В. Корхов, В.В. Мареев, Е.Н. Станкова, 2004, 176 с, ISBN 5-9556-0018-3.
15. Операционная система UNIX,
Г.В. Курячий, 2004, 320 с, ISBN 5-9556-0019-1.
16. Основы сетевой безопасности: криптографические алгоритмы ипротоколы взаимодействия,
О.Р. Лапонина, 2005, 608 с, ISBN 5-9556-0020-5.
Программирование в стандарте POSIX. Часть 2, В.А. Галатенко, 2005, 384 с, ISBN 5-9556-0021-3.
Интеграция приложений на основе WebSphere MQ,
В.А. Макушкин, Д.С. Володичев, 2005, 336 с, ISBN 5-9556-0031-0.
19. Стили и методы программирования,
Н.Н. Непейвода, 2005, 320 с, ISBN 5-9556-0023-Х.
20. Основы программирования на РНР,
Н.В. Савельева, 2005, 264 с, ISBN 5-9556-0026-4.
21. Основы баз данных,
С.Д. Кузнецов, 2005, 488 с, ISBN 5-9556-0028-0.
22. Интеллектуальные робототехнические системы,
В.Л. Афонин, В.А. Макушкин, 2005, 208 с, ISBN 5-9556-0024-8.
23. Программирование на языке Pascal,
Т.А. Андреева, 2005, 240 с, ISBN 5-9556-0025-6.
Основы тестирования программного обеспечения, В.П. Котляров, 2005, 360 с, ISBN 5-9556-0027-2.
Язык Си и особенности работы с ним
Н.И. Костюкова, Н.А. Калинина, 2005, 208с, ISBN 5-9556-0026-4.
26. Основы локальных сетей,
Ю.В. Новиков, СВ. Кондратенко, 2005, 360 с, ISBN 5-9556-0032-9.
27. Операционная система Linux,
Г.В. Курячий, К.А. Маслинский, 2005, 392 с, ISBN 5-9556-0029-9.
28. Проектирование информационных систем,
В.И. Грекул и др., 2005, 296 с, ISBN 5-9556-0033-7.
Основы программирования на языке Пролог, П.А. Шрайнер, 2005, 176 с, ISBN 5-9556-0034-5.
Операционная система Solaris,
Ф.И. Торчинский, 2005, 472 с, ISBN 5-9556-0022-1.
продолжение следует
«Основы информатики и математики»
Новая серия учебных пособий по информатике и *mggggj?m ее математическим основам открыта в 2005 году с це-HNMtvtBw лью современного изложения широкого спектра напра-штИш-- влений информатики на базе соответствующих разде-¦ v: - лов математических курсов, а также примыкающих во-просов, связанных с информационными технологиями.I 4 Особое внимание предполагается уделять возможности использования материалов публикуемых пособий в преподавании информатики и ее математических основ для непрофильных специальностей. Редакционная коллегия также надеется представить вниманию читателей широкую гамму практикумов по информатике и ее математическим основам, реализующих основные алгоритмы и идеи теоретической информатики.
Выпуск серии начат при поддержке корпорации Microsoft в рамках междисциплинарного научного проекта МГУ имени М.В. Ломоносова.
Книги серии
1. Преподавание информатики и математических основ информатики,
под. ред. А.В. Михалева, 2005, 144 с, ISBN 5-9556-0037-Х.
2. Начала алгебры, часть I,
А.В. Михалев, А.А. Михалев, 2005, 272 с, ISBN 5-9556-0038-8.
3. Основы программирования,
В.В. Борисенко, 2005, 328 с, ISBN 5-9556-0039-6.
4. Работа с текстовой информацией. Microsoft Office Word 2003,О.Б. Калугина, B.C. Люцарев, 2005, 152 с, ISBN 5-9556-0041-8.
Книги Интернет-Университета Информационных Технологий всегда можно заказать на сайте: www.intuit.ru Телефон: (095) 253-9312 e-mail: admin@intuit.ru
Адрес: Россия, Москва, 123056, Электрический пер., дом 8, строение 3
Серия «Основы информационных технологий»
В.Е. Карпов, К.А. Коньков Под редакцией члена-корреспондента РАН В.П. Иванникова
Основы операционных систем Курс лекций. Учебное пособие Издание второе, дополненное и исправленное
Редактор Е. Петровичева Компьютерная верстка Ю. Волшмид Корректор Ю. Голомазова Обложка М. Автономова
Формат 60 х 90'/16. Усл. печ. л. 33,5. Бумага офсетная. Подписано в печать 15.07.2005. Тираж 2000 экз. Заказ № 5523.
Санитарно-эпидемиологическое заключение о соответствии санитарным правилам №77.99.02.953.Д.006052.08.03 от 12.08.2003
ООО «ИНТУИТ.ру» Интернет-Университет Информационных Технологий, www.intuit.ru 123056, Москва, Электрический пер., 8, стр. 3.
Отпечатано с готовых диапозитивов на ФГУП ордена «Знак Почета» Смоленская областная типография им. В.И. Смирнова. Адрес: 214000, г. Смоленск, пр-т им. Ю. Гагарина, д. 2.
© Интернет-Университет Информационных Технологий www.intuit.ru, 2004-2005
Подобные документы
Основные понятия об операционных системах. Виды современных операционных систем. История развития операционных систем семейства Windows. Характеристики операционных систем семейства Windows. Новые функциональные возможности операционной системы Windows 7.
курсовая работа [60,1 K], добавлен 18.02.2012Понятие виртуальной памяти, ее реализация. Особенности страничной организации по требованию. Этапы обработки ситуации отсутствия страницы в памяти. Стратегии (алгоритмы) замещения страниц. Особенности некоторых операционных систем: Windows NT и Solaris.
презентация [2,2 M], добавлен 24.01.2014Изучение особенностей операционной системы, набора программ, контролирующих работу прикладных программ и системных приложений. Описания архитектуры и программного обеспечения современных операционных систем. Достоинства языка программирования Ассемблер.
презентация [1,3 M], добавлен 22.04.2014Общая характеристика преимуществ взаимодействующих процессов: модульность, ускорение вычислений. Знакомство с основами современных операционных систем. Анализ особенностей использования общего почтового ящика, рассмотрение способов создания и удаления.
презентация [1,6 M], добавлен 24.01.2014Характеристика сущности, назначения, функций операционных систем. Отличительные черты их эволюции. Особенности алгоритмов управления ресурсами. Современные концепции и технологии проектирования операционных систем, требования, предъявляемые к ОС XXI века.
курсовая работа [36,4 K], добавлен 08.01.2011Операционная система - программа, которая загружается при включении компьютера. Способы реализации интерфейса и классификация операционных систем. Организация файловой системы, типы файлов и их наименования. Понятие каталога, атрибуты файловой системы.
реферат [16,6 K], добавлен 25.02.2011Важность операционной системы для мобильных устройств. Популярность операционных систем. Доля LINUX на рынке операционных систем. История OS Symbian, BlackBerry OS, Palm OS. Отличия смартфона от обычного мобильного телефона. Учет ограничений по памяти.
презентация [477,3 K], добавлен 01.12.2015Основные понятия операционных систем. Современное оборудование компьютера. Преимущества и недостатки операционной системы Linux. Функциональные возможности операционной системы Knoppix. Сравнительная характеристика операционных систем Linux и Knoppix.
реферат [1,5 M], добавлен 17.12.2014Основные понятия операционных систем. Синхронизация и критические области. Сигналы и взаимодействие между процессами. Управление памятью. Драйверы устройств. Особенности современных операционных систем. Центральный процессор, микросхемы часов и таймеров.
учебное пособие [1,2 M], добавлен 24.01.2014Использование операционных систем Microsoft Windows. Разработка операционной системы Windows 1.0. Возможности и характеристика последующих версий. Выпуск пользовательских операционных систем компании, доработки и нововведения, версии Windows XP и Vista.
реферат [23,3 K], добавлен 10.01.2012