Загальне ознайомлення iз системними викликами операцiйної системи Linux

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2010
Тип роботи:
Звіт
Предмет:
Мережеві операційні системи
Група:
ІБ - 43

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”  ЗВІТ ДО ПРАКТИЧНОЇ РОБОТИ № 5 З КУРСУ “МЕРЕЖЕВІ ОПЕРАЦІЙНІ СИСТЕМИ” на тему “ Загальне ознайомлення iз системними викликами операцiйної системи Linux ” Львів – 2010 Мета роботи Познайомитися iз повним набором системних викликiв операцiйної системи Linux та призначенням i синопсисом найвживанiших системних викликiв. Повний список системних викликiв: ОПИС Системний виклик - це основний інтерфейс між додатком і ядром Лінакса. Перелік системних викликів Linux 2.4.17 складався з 1100 функцій, визначених в /usr/src/linux/include/asm-*/unistd.h. _llseek(2), _newselect(2), _sysctl(2), accept(2), access(2), acct(2), adjtimex(2), afs_syscall, alarm(2), bdflush(2), bind(2), break, brk(2), cacheflush(2), capget(2), capset(2), chdir(2), chmod(2), chown(2), chown32, chroot(2), clone(2), close(2), connect(2), creat(2), create_module(2), delete_module(2), dup(2), dup2(2), execve(2), exit(2), fchdir(2), fchmod(2), fchown(2), fchown32, fcntl(2), fcntl64, fdatasync(2), flock(2), fork(2), fstat(2), fstat64, fstatfs(2), fsync(2), ftime, ftruncate(2), ftruncate64, get_ker- nel_syms(2), getcwd(2), getdents(2), getdents64, gete- gid(2), getegid32, geteuid(2), geteuid32, getgid(2), get- gid32, getgroups(2), getgroups32, getitimer(2), getpage- size(2), getpeername(2), getpmsg, getpgid(2), getpgrp(2), getpid(2), getppid(2), getpriority(2), getresgid(2), getresgid32, getresuid(2), getresuid32, getrlimit(2), getrusage(2), getsid(2), getsockname(2), getsockopt(2), gettid, gettimeofday(2), getuid(2), getuid32, gtty, idle, init_module(2), ioctl(2), ioperm(2), iopl(2), ipc(2), kill(2), lchown(2), lchown32, link(2), listen(2), lock, lseek(2), lstat(2), lstat64, madvise(2), mincore(2), mkdir(2), mknod(2), mlock(2), mlockall(2), mmap(2), mod- ify_ldt(2), mount(2), mprotect(2), mpx, mremap(2), msync(2), munlock(2), munlockall(2), munmap(2), nanosleep(2), nfsservctl(2), nice(2), oldfstat, oldlstat, oldolduname, oldstat, oldumount, olduname, open(2), pause(2), personality(2), phys, pipe(2), pivot_root(2), poll(2), prctl(2), pread(2), prof, profil, ptrace(2), putpmsg, pwrite(2), query_module(2), quotactl(2), read(2), readahead, readdir(2), readlink(2), readv(2), reboot(2), recv(2), recvfrom(2), recvmsg(2), rename(2), rmdir(2), rt_sigaction, rt_sigpending, rt_sigprocmask, rt_sigqueue- info, rt_sigreturn, rt_sigsuspend, rt_sigtimedwait, sched_get_priority_max(2), sched_get_priority_min(2), sched_getparam(2), sched_getscheduler(2), sched_rr_get_interval(2), sched_setparam(2), sched_setscheduler(2), sched_yield(2), security, select(2), sendfile(2), send(2), sendmsg(2), sendto(2), setdomainname(2), setfsgid(2), setfsgid32, setfsuid(2), setfsuid32, setgid(2), setgid32, setgroups(2), set- groups32, sethostname(2), setitimer(2), setpgid(2), set- priority(2), setregid(2), setregid32, setresgid(2), setresgid32, setresuid(2), setresuid32, setreuid(2), setreuid32, setrlimit(2), setsid(2), setsockopt(2), set- timeofday(2), setuid(2), setuid32, setup(2), sgetmask(2), shutdown(2), sigaction(2), sigaltstack(2), signal(2), sig- pending(2), sigprocmask(2), sigreturn(2), sigsuspend(2), socket(2), socketcall(2), socketpair(2), ssetmask(2), stat(2), stat64, statfs(2), stime(2), stty, swapoff(2), swapon(2), symlink(2), sync(2), sysfs(2), sysinfo(2), sys- log(2), time(2), times(2), truncate(2), truncate64, ulimit, umask(2), umount(2), uname(2), unlink(2), uselib(2), ustat(2), utime(2), vfork(2), vhangup(2), vm86(2), vm86old, wait4(2), waitpid(2), write(2), writev(2). З наведеного переліку, 9 є застарілими, а саме getrlimit,oldfstat, oldlstat, oldolduname, oldstat, olduname, read-dir, select та vm86old (дивіться сторінку obsolete(2)), і 15 ще не втілено в стандартному ядрі; ними являються afs_syscall, break, ftime, getpmsg, gtty, idle, lock, mpx phys, prof, profil, putpmsg, security, stty та ulimit(дивіться unimplemented(2)). Однак, ftime(3), profil(3) та ulimit(3) існують як функції Стандартної бібліотеки.Місце phys зайнято, починаючи з 2.1.116, системним викликом umount, тож phys ніколи не буде реалізовано.Виклики getpmsg та putpmsg призначено для ядер з латкою для підтримки потоків, і можуть ніколи не попасти до стандартного ядра. Виклик security зарезервовано на майбутнє.Грубо кажучи, код, що належить пронумерованому системному викликові __NR_xxx, зазначеному в /usr/include/asm/unistd.h, відповідає той, що можна знайтиу вихідному тексті ядра як функцію sys_xxx(). (Відправну таблицю для i386 можна знайти в /usr/src/linux/arch/i386/kernel/entry.S). Проте існує багато винятків, головним чином з-за того, що старші системні виклики замінено на нові, але це робилося без належної систематичності. На платформах з пропрієтарною емуляцією операційної системи, таких як parisc, sparc, sparc64 й alpha, існує багато додаткових системних викликів; mips64 також включає повний набір 32-бітних викликів. А далі, подробиці щодо Linux 2.4.17. Визначення __NR_oldstat і __NR_stat стосуються функцій sys_stat() та sys_newstat(), так само як fstat та lstat. Аналогічно, визначення __NR_oldolduname, __NR_olduname та __NR_uname призначено для функцій sys_olduname(),sys_uname() та sys_newuname(). Таким чином, __NR_stat та __NR_uname завжди посилалися на найостаннішу версію системного виклику, тоді як решта існують для оберненої сумісності. Інакша справа з select та mmap. Вони беруть п'ятьпараметрів, і створювали проблеми із тим як відбувається передача параметрів у i386. Таким чином, якщо на інших системах sys_select() та sys_mmap() відповідають __NR_select та __NR_mmap, то на i386 можна натомість знайти old_select() та old_mmap() (функції, в яких вживається покажчик на блок параметрів). На сьогодення, передача п'яти параметрів не викликає більше ускладнень, тому існують __NR__newselect (використовуваний в libc 6), що відповідає безпосередньо sys_select(), і, відповідно,__NR_mmap2. Інші нумеровані системні виклики, __NR__llseek та __NR__sysctl, не включають додаткового твердого пробілу в sys_llseek() й sys_sysctl().Також існує __NR_readdir, що відповідає old_readdir(),функції, що читає, щонайбільше один каталог за раз, і яку замінив системний виклик sys_getdents(). На багатьох платформах, i386 - включно, виклики, щостосуються сокетів, ущільнено за допомогою socketcall(), а IPC-виклики (виклики міжпроцесної взаємодії) System V – за допомогою ipc(). На нових платформах, що включають тільки 64-бітний доступ до файлів, і 32-бітні користувацькі ID (uid) (тобто, таких як alpha, ia64, s390x), виклики, чия назва закінчується на *64 або *32, відсутні. Там де виклики з *64 або *32 існують, інші версії вважатимуться застарілими. Системні виклики chown та lchown було поміняно в 2.1.81.Також було додано *64 і *32-версії до ядра 2.4, так само як нові версії getrlimit і mmap, а також нові виклики pivot_root, mincore, madvise, security, gettid і reada-head. Групи: ввiд-вивiд файлiв; _llseek(2), close(2), creat(2), dup(2), link(2), lseek(2) робота з каталогами; chdir(2), chroot(2), fchdir(2), mkdir(2) керування пам'яттю; brk(2), fdatasync(2), fsync(2), ftruncate(2), rename(2), sync(2) робота з процесами (створення, завершення, тощо); execve(2), exit(2), flock(2), fork(2), диспетчерування процесiв; acct(2), getpid(2), getppid(2), nice(2), vfork(2) засоби мiжпроцесних комунiкацiй; mount(2), pipe(2), umount(2), uselib(2), vfork(2) робота з мережею; accept(2), bind(2), connect(2), getpeername(2), getsockname(2), getsockopt(2), send(2) засоби роботи iз сигналами; kill(2), pause(2), poll(2), signal(2) sig- pending(2) служба часу; acct(2), alarm(2), time(2), times(2), utime(2) засоби видачi iнформацiї про операцiйну систему; sysctl(2), fstat(2), fstatfs(2), gete-gid(2), geteuid(2), statfs(2) забезпечення роботи iз модулями. ioctl(2), ioperm(2), vhangup(2) 3.Призначення системних викликiв: _llseek(2) - змінює відносне положення читання/запису у файлі close(2) -закриває дескриптор файла creat(2)- відкриває і, по можливості, створює файл або пристрій dup(2) - дублює дескриптор файла link(2) - створює нову назву для файла lseek(2) - переміщує позицію читання/запису файла chdir(2) - змінює робочий каталог chroot(2) - змінює кореневий каталог fchdir(2) - змінює робочий каталог mkdir(2) - створює каталог brk(2) - змінює розмір сегменту даних fdatasync(2) fsync(2)- синхронізують стан файла в пам'яті із тим, що на диску ftruncate(2) - стинає файл до вказаної довжини rename(2) - змінює назву і місцеположення файла sync(2) - фіксує буферний кеш на диску execve(2) - виконує програму exit(2) - завершує роботу програми flock(2) - застосовує дорадче замкнення відкритого файла fork(2) - створює процес-нащадок. acct(2) - вмикає та вимикає облік процесів getpid(2) getppid(2) - добуття ідентифікаційного номера процесу nice(2) - змінює пріоритет процесу vfork(2) - створює дочірній процес і блокує батьківський mount(2) umount(2)- монтаж та демонтаж файлових систем pipe(2) - створює конвеєр uselib(2) - призначає загальну бібліотеку vfork(2) створює дочірній процес і блокує батьківський accept(2) - приймає сполучення на сокеті bind(2) - функція надання назви сокету connect(2) - започатковує сполучення на сокеті getpeername(2) - одержує ім'я сполученого сонета рівноправного вузла getsockname(2) - добуває назву сокета getsockopt(2) - добуває та задає опції сокета send(2) - посилає повідомлення через сокет kill(2) - надсилає сигнал процесу pause(2) - очікування сигналу poll(2) - очікує якоїсь події, що відбудеться на дескрипторі файла signal(2) - обробка сигналів ANSI C acct(2) - вмикає та вимикає облік процесів alarm(2) - встановлює таймер для подачі сигналу тривоги time(2) - повертає час у секундах utime/s(2) - змінює час доступу і/або модифікаціїіндексного вузла fstat(2) fstatfs(2)- добуття статусу файла gete-gid(2) - добуває ідентифікатор групи geteuid(2) добуває ідентичність користувача statfs(2) - добуття статистики про файлову систему ioctl(2) - керує пристроями ioperm(2) - встановлює дозволи вводу-виводу портів vhangup(2) - імітує завершення роботи на поточному терміна stat - добуття статусу файла struct stat { dev_t st_dev; /* прилад */ ino_t st_ino; /* індексний номер */ mode_t st_mode; /* захист */ nlink_t st_nlink; /* кількість твердих посилань */ uid_t st_uid; /* користувацький ID власника */ gid_t st_gid; /* ID групи власника */ dev_t st_rdev; /* тип приладу */ off_t st_size; /* загальний розмір, в байтах */ blksize_t st_blksize; /* розмір блоку для операцій вводу/виводу */ blkcnt_t st_blocks; /* кількість виділених блоків */ time_t st_atime; /* час останнього доступу */ time_t st_mtime; /* час останньої модифікації */ time_t st_ctime; /* час останньої зміни статусу */ }; readdir(2) – зчитає дані каталога ЗВЕДЕННЯ #include <unistd.h> #include <linux/dirent.h> #include <linux/unistd.h> _syscall3(int, readdir, uint, fd, struct dirent *, dirp, uint, count); int readdir(unsigned int fd, struct dirent *dirp, unsigned int count); ОПИС Ця функція записує одну структуру dirent із каталогу,заданого fd, в область пам’яті, на яку вказує dirp. Параметр count майже завжди ігнорується і зчитується одна структура dirent. Структура dirent визначена так: struct dirent { long d_ino; /* номер inode */ off_t d_off; /* зміщення на dirent */ unsigned short d_reclen; /* довжина d_name */ char d_name [NAME_MAX+1]; /* і’мя файла */ } d_ino - це номер inode. d_off - зміщення запису dirent від початку каталогу. d_reclen - довжина d_name (без кінцевого нуля). d_name – ім’я файла,яке закінчується нулем Призначення системних викликiв перелiчених в пунктi 4: open(2) - відкриває і, по можливості, створює файл або пристрій create(2) - відкриває і, по можливості, створює файл або пристрій read(2) - читає з дескриптора файла write(2) - здійснює запис до дескриптора файла close(2) - закриває дескриптор файла umask(2) - встановлює маску створення файлів stat(2) - добуття статусу файла fstat(2) - добуття статусу файла lstat(2) - добуття статусу файла lseek(2) - переміщує позицію читання/запису файла readdir(2) – отримати елемент каталогу по його дескриптору getdents(2) – читання елементів із каталогу і перетворення в системно-незалежний формат. fork(2) - створює процес-нащадок. execve(2) - виконує програму wait(2) –очікування завершення породженого процесу. exit(2) - завершує роботу програми kill(2) - надсилає сигнал процесу Висновок На даній лабораторній роботі я познайомився iз повним набором системних викликiв операцiйної системи Linux та призначенням i синопсисом найвживанiших системних викликiв.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!