Морис Бах - Архитектура операционной системы UNIX
stat
stat(filename, statbuf)
char *filename;
struct stat *statbuf;
fstat(fd, statbuf)
int fd;
struct stat *statbuf;
Функция stat возвращает информацию о статусе (состоянии) указанного файла. Функция fstat выполняет то же самое в отношении открытого файла, имеющего дескриптор fd. Структура statbuf определена следующим образом:
struct stat {
dev_t st_dev; /* номер устройства, на котором находится файл */
ino_t st_ino; /* номер индекса */
ushort st_mode; /* тип файла (см. mknod) и права доступа к нему (см. chmod) */
short st_nlink; /* число связей, указывающих на файл */
ushort st_uid; /* код идентификации владельца файла */
ushort st_gid; /* код идентификации группы */
dev_t st_rdev; /* старший и младший номера устройства */
off_t st_size; /* размер в байтах */
time_t st_atime; /* время последнего обращения */
time_t st_mtime; /* время последнего внесения изменений */
time_t st_ctime; /* время последнего изменения статуса */
};
stimе
stime(tptr)
long *tptr;
Функция stime устанавливает системное время и дату в соответствие со значением, указанным в параметре tptr. Время указывается в секундах от 00:00:00 1 января 1970 года по Гринвичу.
synс
sync()
Функция sync выгружает содержащуюся в системных буферах информацию (относящуюся к файловой системе) на диск.
timе
time(tloc)
long *tloc;
Функция time возвращает системное время в секундах от 00:00:00 1 января 1970 года по Гринвичу.
times
#include ‹sys/types.h›
#include ‹sys/times.h›
times(tbuf)
struct tms *tbuf;
Функция times возвращает время в таймерных тиках, реально прошедшее с любого произвольного момента в прошлом, и заполняет буфер tbuf следующей учетной информацией:
struct tms {
time_t tms_utime; /* продолжительность использования ЦП в режиме задачи */
time_t tms_stime; /* продолжительность использования ЦП в режиме ядра */
time_t tms_cutime; /* сумма значений tms_utime и tms_cutime у потомков */
time_t tms_sutime; /* сумма значений tms_stime и tms_sutime у потомков */
};
ulimit
ulimit(cmd, limit)
int cmd;
long limit;
Функция ulimit дает процессу возможность устанавливать различные ограничения в зависимости от значения параметра cmd:
1 вернуть максимальный размер файла (в блоках по 512 байт), в который процесс может вести запись
2 установить ограничение сверху на размер файла равным значению параметра limit
3 вернуть значение верхней точки прерывания (максимальный доступный адрес в области данных)
uмask
umask(mask)
int mask;
Функция umask устанавливает значение маски, описывающей режим создания файла (mask), и возвращает старое значение. При создании файла биты разрешения доступа, которым соответствуют установленные разряды в mask, будут сброшены.
uмount
umount(specialfile)
char *specialfile
Функция umount выполняет демонтирование файловой системы, расположенной на устройстве ввода-вывода блоками specialfile.
unamе
#include ‹sys/utsname.h›
uname(name)
struct utsname *name;
Функция uname возвращает информацию, идентифицирующую систему в соответствии со следующей структурой:
struct utsname {
char sysname[9]; /* наименование */
char nodename[9]; /* имя сетевого узла */
char release[9]; /* информация о версии системы */
char version[9]; /* дополнительная информация о версии */
char machine[9]; /* технический комплекс */
};
unlink
unlink(filename)
char *filename;
Функция unlink удаляет из каталога запись об указанном файле.
ustat
#include ‹sys/types.h›
#include ‹ustat.h›
ustat(dev, ubuf)
int dev;
struct ustat *ubuf;
Функция ustat возвращает статистические данные, характеризующие файловую систему с идентификатором dev (старший и младший номера устройства). Структура ustat определена следующим образом:
struct ustat {
daddr_t f_tfree; /* количество свободных блоков */
ino_t f_tinode; /* количество свободных индексов */
char f_fname[6]; /* наименование файловой системы */
char f_fpack[6]; /* сокращенное (упакованное) имя файловой системы */
};
utimе
#include ‹sys/types.h›
utime(filename, times)
char *filename;
struct utimbuf *times;
Функция utime переустанавливает время последнего обращения к указанному файлу и последнего внесения изменений в соответствии со значениями, на которые указывает параметр times. Если параметр содержит нулевое значение, используется текущее время. В противном случае параметр указывает на следующую структуру:
struct utimbuf {
time_t axtime; /* время последнего обращения */
time_t modtime; /* время последнего внесения изменений */
};
Все значения отсчитываются от 00:00:00 1 января 1970 года по Гринвичу.
wait
wait(wait_stat)
int *wait_stat;
Функция wait побуждает процесс приостановить свое выполнение до момента завершения потомка или до момента приостанова трассируемого процесса. Если значение параметра wait_stat ненулевое, оно представляет собой адрес, по которому функция записывает возвращаемую процессу информацию. При этом используются только 16 младших разрядов кода возврата. Если обнаружен завершивший свое выполнение потомок, 8 младших разрядов кода возврата содержат 0, а 8 старших разрядов — код возврата (аргумент) функции exit. Если потомок завершил свое выполнение в результате получения сигнала, код возврата функции exit содержит номер сигнала. Кроме того, если образ процесса-потомка сохранен в файле "core", производится установка бита 0200. Если обнаружен приостановивший свое выполнение трассируемый процесс, 8 старших разрядов кода возврата функции wait содержат номер приведшего к его приостанову сигнала, а 8 младших разрядов — восьмиричное число 0177.
writе
write(fd, buf, count)
int fd, count;
char *buf;
Функция write выполняет запись указанного в count количества байт данных, начиная с адреса buf, в файл с дескриптором fd.
БИБЛИОГРАФИЯ
[Babaoglu 81] Babaoglu, O., and W.Joy, "Converting a Swap-Based System to do Paging in an Architecture Lacking Page-Referenced Bits", Proceedings of the 8th Symposium on Operating Systems Principles, ACM Operating Systems Review, Vol. 15(5), Dec. 1981, pp. 78–86.
[Bach 84] Bach, M.J., and S.J.Buroff, "Multiprocessor UNIX Systems", AT&T Bell Laboratories Technical Journal, Oct. 1984, Vol. 63, No. 8, Part 2, pp. 1733–1750.
[Barak 80] Barak, A.B. and Aapir, "UNIX with Satellite Processors", Software — Practice and Experience, Vol. 10, 1980, pp. 383–392.
[Beck 85] Beck, B. and B.Kasten, "VLSI Assist in Building a Multiprocessor UNIX System", Proceedings of the USENIX Association Summer Conference, June 1985, pp. 255–275.
[Berkeley 83] UNIX Programmer's Manual, 4.2 Berkeley Software Distribution, Virtual VAX-11 Version, Computer Science Division, Department of Electrical Engineering and Computer Science, University of California at Berkeley, August 1983.
[Birrell 84] Birrell, A.D. and B.J.Nelson, "Implementing Remote Procedure Calls", ACM Transactions on Computer Systems, Vol. 2, No. 1, Feb. 1984, pp. 39–59.
[Bodenstab 84] Bodenstab, D.E., T.F.Houghton, K.A.Kelleman, G.Ronkin, and E.P.Schan, "UNIX Operating System Porting Experiences", AT amp;T Bell Laboratories Technical Journal, Vol. 63, No. 8, Oct. 1984, pp. 1769–1790.
[Bourne 78] Bourne, S.R., "The UNIX Shell", The Bell System Technical Journal, July-August 1978, Vol. 57, No. 6, Part 2, pp. 1971–1990.
[Bourne 83] Bourne, S.R., The UNIX System, Addison-Wesley, Reading, MA, 1983.
[Brownbridge 82] Brownbridge, D.R., L.F.Marshall, and B.Randell, "The Newcastle Connection or UNIXes of the World Unite!" in Software Practice and Experience, Vol. 12, 1982, pp. 1147–1162.
[Bunt 76] Bunt, R.B., "Scheduling Techniques for Operating Systems", Computer, Oct. 1976, pp. 10–17.
[Christian 83] Christian, K., The UNIX Operating System, John Wiley & Sons Inc., New York, NY, 1983.
[Coffman 73] Coffman, E.G., and P.J.Denning, Operating Systems Theory, Prentice-Hall Inc., Englewood Cliffs, NJ, 1973.
[Cole 85] Cole, C.T., P.B.Flinn, and A.B.Atlas, "An Implementation of an Extended File System for UNIX", Proceedings of the USENIX Conference, Summer 1985, pp. 131–149.
[Denning 68] Denning, P.J., "The Working Set Model for Program Behavior, Communications of the ACM, Volume 11, No. 5, May 1968, pp. 323–333.
[Dijkstra 65] Dijkstra, E.W., "Solution of a Problem in Concurrent Program Control", CACM, Vol. 8, No. 9, Sept. 1965, p. 569.
[Dijkstra 68] Dijkstra, E.W., "Cooperating Sequential Processes", in Programming Languages, ed. F.Genuys, Academic Press, New York, NY, 1968.
[Felton 84] Felton, W.A., G.L.Miller, and J.M.Milner, "A UNIX Implementation for System/370", AT&T Bell Laboratories Technical Journal, Vol. 63, No. 8, Oct. 1984, pp. 1751–1767.
[Goble 81] Goble, G.H. and M.H.Marsh, "A Dual Processor VAX 11/780", Purdue University Technical Report, TR-EE 81–31, Sept. 1981.
[Henry 84] Henry, G.J., "The Fair Share Scheduler", AT amp;T Bell Laboratories Technical Journal, Oct. 1984, Vol. 63, No. 8, Part 2, pp. 1845–1858.
[Holley 79] Holley, L.H., R.P421rmelee, C.A.Salisbury, and D. N.Saul, "VM/370 Asymmetric Multiprocessing", IBM Systems Journal, Vol. 18, No. 1, 1979, pp. 47–70.
[Holt 83] Holt, R.C., Concurrent Euclid, the UNIX System, and Tunis, Addison-Wesley, Reading, MA, 1983.
[Horning 73] Horning, J.J., and B.Randell, "Process Structuring", Computing Surveys, Vol. 5, No. 1, March 1973, pp. 5-30.
[Hunter 84] Hunter, C.B. and E.Farquhar, "Introduction to the NSI16000 Architecture", IEEE Micro, April 1984, pp. 26–47.
[Johnson 78] Johnson, S.C. and D.M.Ritchie, "Portability of C Programs and the UNIX System", The Bell System Technical Journal, Vol. 57, No. 6, Part 2, July-August, 1978, pp. 2021–2048.
[Kavaler 83] Kavaler, P. and A.Greenspan, "Extending UNIX to Local-Area Networks", Mini-Micro Systems, Sept. 1983, pp. 197–202.
[Kernighan 78] Kernighan, B.W., and D.M.Ritchie, The C Programming Language, Prentice-Hall, Englewood Cliffs, NJ, 1978.
[Kernighan 84] Kernighan, B.W., and R.Pike, The UNIX Programming Environment, Prentice-Hall, Englewood Cliffs, NJ, 1984.
[Killian 84] Killian, T.J., "Processes as Files", Proceedings of the USENIX Conference, Summer 1984, pp. 203–207.
[Levy 80] Levy, H.M., and R.H.Eckhouse, Computer Programming and Architecture: The VAX-11, Digital Press, Bedford, MA, 1980.
[levy 82] Levy, H.M., and P.H.Lipman, "Virtual Memory Management in the VAX/VMS Operating System", Computer, Vol. 15, No. 3, March 1982, pp. 35–41.
[Lu 83] Lu, P.M., W.A.Dietrich, et. al., "Architecture of a VLSI MAP for BELLMAC-32 Microprocessor", Proc. of IEEE Spring Compcon, Feb. 28, 1983, pp. 213–217.
[Luderer 81] Luderer, G.W.R., H.Che, J.P.Haggerty, P.A.Kirslis, and W.T.Marshall, "A Distributed UNIX System Based on a Virtual Circuit Switch", Proceedings of the Eighth Symposium on Operating Systems Principles, Asilomar, California, December 14–16, 1981.
[Lycklama 78a] Lycklama, H. and D.L.Bayer, "The MERT Operating System", The Bell System Technical Journal, Vol. 57, No. 6, Part 2, July-August 1978, pp. 2049–2086.