DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

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

Оригінальна назва роботи

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

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

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

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

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

Про що ця робота

У звіті наведено загальне ознайомлення із системними викликами операційної системи Linux. Описано призначення та синопсис найвживаніших системних викликів ядра.

У роботі розглядаються

  • Операційна система Linux
  • Системні виклики
  • Ядро Linux
  • Процеси та потоки
  • Робота з файлами та каталогами
  • Мережеві операційні системи

Зміст і розділи

  1. Мета роботи
  2. Повний список системних викликів
  3. Опис системних викликів
  4. Групи системних викликів
  5. Призначення системних викликів
  6. Структура stat
  7. Зведення
  8. Висновок
Для кого:Студенти технічних спеціальностей вищих навчальних закладів
Викладачі:Викладач кафедри

Ключові поняття

системний викликядро Linuxдескриптор файлапроцескаталогсинопсисінтерфейсфункціяструктура direntстандартна бібліотека

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”  ЗВІТ ДО ПРАКТИЧНОЇ РОБОТИ № 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в.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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