Міністерство освіти і науки Україниіі
Національний університет „Львівська політехніка”
Звіт
До практичних робіт №3 та №4
З дисципліни:
«Мережеві операційні системи»
Варіант 2
ЗАВДАННЯ
Мета роботи
Познайомитися iз файловою системою proc операцiйної системи Linux.
Познайомитися з утилiтами free, top, ps, якi базуються на файловiй системi proc.
Теоретичний вступ
Крiм механiзму системних викликiв, в операцiйнiй системi Linux iснує ще один механiзм доступу до захищеної iнформацiї ядра - файлова система proc. Файлова система proc є специфiчною особливiстю операцiйної системи Linux. Вона надає iнформацiю про поточний стан ядра i всi процеси, якi в даний час виконуються. Основнi концепцiї файлової системи proc Linux запозичив в операцiйної системи UNIX System V Release 4 i у деяких її клонiв, особливо в експериментальної системи Plan 9.
Файлова система proc є вiртуальною файловою системою, в нiй динамiчно створюються пiддиректорiї для кожного процесу i окремi секцiї для ядра. Кожному процесу, який в даний момент виконується в операцiйнiй системi, вiдповiдає директорiя /proc/pid, де pid - iдентифiкатор вiдповiдного процесу.
Команди ps, free, top формують свої результати, читаючи iнформацiю iз файлової системи proc. Цей iнтерфейс до ядра незалежний вiд системних викликiв.
free
NAME
free - Display amount of free and used memory in the system
SYNOPSIS
free [-b | -k | -m | -g] [-o] [-s delay ] [-t] [-V]
DESCRIPTION
free displays the total amount of free and used physical and swap mem‐
ory in the system, as well as the buffers used by the kernel. The
shared memory column should be ignored; it is obsolete.
Ex:
total used free shared buffers cached
Mem: 1802732 601328 1201404 0 217784 267616
-/+ buffers/cache: 115928 1686804
Swap: 1047176 0 1047176
Total: 2849908 601328 2248580
top
NAME
top - display Linux tasks
SYNOPSIS
top -hv | -bcHisS -d delay -n iterations -p pid [, pid ...]
The traditional switches '-' and whitespace are optional.
Ex:
ls /proc
1
10
1007
1032
1033
1040
1058
1060
1066
1068
1072
1079
11
1182
12
1264
13
1372
1374
1376
1377
14
1485
15
16
17
18
19
1905
1927
1964
1984
2
20
2032
21
2113
22
2210
23
2375
2399
24
2420
25
26
2612
2636
2638
27
2727
28
286
29
295
2974
2975
2976
2978
2980
3
30
31
32
33
34
35
36
367
37
3743
38
4
4012
4084
42
424
427
43
45
46
49
5
50
51
52
53
54
55
56
569
57
58
6
648
664
7
734
771
773
776
782
783
784
787
792
794
8
858
877
896
899
9
931
933
934
acpi
asound
binder
buddyinfo
bus
cgroups
cmdline
cpuinfo
crypto
devices
diskstats
dma
driver
execdomains
fb
filesystems
fs
interrupts
iomem
ioports
irq
kallsyms
kcore
key-users
kmsg
kpagecount
kpageflags
latency_stats
loadavg
locks
mdstat
meminfo
misc
modules
mounts
mtrr
net
pagetypeinfo
partitions
sched_debug
schedstat
scsi
self
slabinfo
softirqs
stat
swaps
sys
sysrq-trigger
sysvipc
timer_list
timer_stats
tty
uptime
version
version_signature
vmallocinfo
vmstat
zoneinfo
attr
auxv
cgroup
clear_refs
cmdline
coredump_filter
cpuset
cwd
environ
exe
fd
fdinfo
io
latency
limits
loginuid
maps
mem
mountinfo
mounts
mountstats
net
oom_adj
oom_score
pagemap
personality
root
sched
schedstat
sessionid
smaps
stack
stat
statm
status
syscall
task
wchan
Cat /proc/cpuinfoprocessor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 14
model name : Intel(R) Core(TM) Duo CPU T2450 @ 2.00GHz
stepping : 12
cpu MHz : 2000.000
cache size : 2048 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx constant_tsc arch_perfmon bts pni monitor est tm2 xtpr pdcm
bogomips : 4000.09
clflush size : 64
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 14
model name : Intel(R) Core(TM) Duo CPU T2450 @ 2.00GHz
stepping : 12
cpu MHz : 2000.000
cache size : 2048 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
apicid : 1
initial apicid : 1
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx constant_tsc arch_perfmon bts pni monitor est tm2 xtpr pdcm
bogomips : 3995.18
clflush size : 64
power management:
Cat /proc/devicesCharacter devices:
1 mem
4 /dev/vc/0
4 tty
4 ttyS
5 /dev/tty
5 /dev/console
5 /dev/ptmx
6 lp
7 vcs
10 misc
13 input
14 sound
21 sg
29 fb
99 ppdev
108 ppp
116 alsa
128 ptm
136 pts
171 ieee1394
180 usb
189 usb_device
216 rfcomm
251 pcmcia
252 hidraw
253 usbmon
254 rtc
Block devices:
1 ramdisk
259 blkext
7 loop
8 sd
9 md
11 sr
65 sd
66 sd
67 sd
68 sd
69 sd
70 sd
71 sd
128 sd
129 sd
130 sd
131 sd
132 sd
133 sd
134 sd
135 sd
252 device-mapper
253 pktcdvd
254 mdp
Cat /proc/mountsrootfs / rootfs rw 0 0
none /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
none /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev tmpfs rw,relatime,mode=755 0 0
/dev/disk/by-uuid/b1f39269-e65c-44bb-9675-f9452d0f87f6 / ext4 rw,relatime,errors=remount-ro,barrier=1,data=ordered 0 0
none /sys/kernel/security securityfs rw,relatime 0 0
none /sys/fs/fuse/connections fusectl rw,relatime 0 0
none /sys/kernel/debug debugfs rw,relatime 0 0
none /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
none /dev/shm tmpfs rw,nosuid,nodev,relatime 0 0
none /var/run tmpfs rw,nosuid,relatime,mode=755 0 0
none /var/lock tmpfs rw,nosuid,nodev,noexec,relatime 0 0
none /lib/init/rw tmpfs rw,nosuid,relatime,mode=755 0 0
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,nosuid,nodev,noexec,relatime 0 0
/dev/sda7 /mnt fuseblk rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other,blksize=4096 0 0
major minor #blocks name
Cat /proc/partitions
8 0 156290904 sda
8 1 1537169 sda1
8 2 1 sda2
8 5 1047187 sda5
8 6 31868047 sda6
8 7 40959944 sda7
8 8 61439932 sda8
8 9 19432739 sda9
Cat /usr/include/linux/sched.h
#ifndef _LINUX_SCHED_H
#define _LINUX_SCHED_H
/*
* cloning flags:
*/
#define CSIGNAL 0x000000ff /* signal mask to be sent at exit */
#define CLONE_VM 0x00000100 /* set if VM shared between processes */
#define CLONE_FS 0x00000200 /* set if fs info shared between processes */
#define CLONE_FILES 0x00000400 /* set if open files shared between processes */
#define CLONE_SIGHAND 0x00000800 /* set if signal handlers and blocked signals shared */
#define CLONE_PTRACE 0x00002000 /* set if we want to let tracing continue on the child too */
#define CLONE_VFORK 0x00004000 /* set if the parent wants the child to wake it up on mm_release */
#define CLONE_PARENT 0x00008000 /* set if we want to have the same parent as the cloner */
#define CLONE_THREAD 0x00010000 /* Same thread group? */
#define CLONE_NEWNS 0x00020000 /* New namespace group? */
#define CLONE_SYSVSEM 0x00040000 /* share system V SEM_UNDO semantics */
#define CLONE_SETTLS 0x00080000 /* create a new TLS for the child */
#define CLONE_PARENT_SETTID 0x00100000 /* set the TID in the parent */
#define CLONE_CHILD_CLEARTID 0x00200000 /* clear the TID in the child */
#define CLONE_DETACHED 0x00400000 /* Unused, ignored */
#define CLONE_UNTRACED 0x00800000 /* set if the tracing process can't force CLONE_PTRACE on this clone */
#define CLONE_CHILD_SETTID 0x01000000 /* set the TID in the child */
#define CLONE_STOPPED 0x02000000 /* Start in stopped state */
#define CLONE_NEWUTS 0x04000000 /* New utsname group? */
#define CLONE_NEWIPC 0x08000000 /* New ipcs */
#define CLONE_NEWUSER 0x10000000 /* New user namespace */
#define CLONE_NEWPID 0x20000000 /* New pid namespace */
#define CLONE_NEWNET 0x40000000 /* New network namespace */
#define CLONE_IO 0x80000000 /* Clone io context */
/*
* Scheduling policies
*/
#define SCHED_NORMAL 0
#define SCHED_FIFO 1
#define SCHED_RR 2
#define SCHED_BATCH 3
/* SCHED_ISO: reserved but not implemented yet */
#define SCHED_IDLE 5
#endif