Procfs
procfs er et specielt filsystem, der bruges i UNIX -lignende operativsystemer. Giver dig adgang til information fra kernen om systemprocesser. Nødvendig for at køre kommandoer som ps , w , top . Det er normalt monteret på /proc. procfs skaber en to-niveau repræsentation af procesrum. På øverste niveau er processer mapper navngivet efter deres pid . På øverste niveau er der også et link til den mappe, der svarer til den proces, der foretager anmodningen; det kan have et andet navn på forskellige operativsystemer ( curproc på FreeBSD , self på Linux ).
Historie
UNIX 8. udgave
procfs dukkede første gang op i den 8. udgave af UNIX , udgivet i 1985, og var beregnet til at give en processtyringsgrænseflade, der var mere praktisk end at kalde ptrace . Det blev beskrevet i detaljer af Tom Killian i Processes as Files i 1984. Hver proces var repræsenteret af en fil, der kunne skrives til. Antallet af tilgængelige ioctl- opkald var 11. [1] [2]
System V release 4
Dette system, udgivet i 1990, arvede procfs fra UNIX 8, med nogle forbedringer. Processer var stadig repræsenteret som simple filer, men der var allerede 37 ioctl- opkald tilgængelige . FS blev tilstrækkelig til at bygge hjælpeprogrammer som ps på grundlag af det , men forblev ubelejligt og dårligt udvidelsesdygtigt. [en]
Implementeringen er detaljeret beskrevet i Roger Faulkner og Ron Gomez' "The Process File System and Process Model in UNIX System V" i 1991.
Plan 9
I 1992 udkom den første offentlige udgivelse af Plan 9 OS . Dette var toppen af procfs udvikling . Al processtyring er flyttet hertil. Processer er blevet til mapper i stedet for filer. I stedet for ioctl blev der brugt tekstkommandoer, og kontrol kunne udføres med cat og ls kommandoerne . [3] Når du monterer /proc fra en anden computer over et netværk, kan en lokal proces interagere med en fjernproces, som om de var på den samme maskine.
Solaris 2.6
Solaris 2.6 arvede meget af Plan 9 's procfs- struktur , men alle filerne der var binære, beregnet til at blive brugt af et program, ikke et menneske. [1] Generelt er filsystemet blevet noget mere primitivt i forhold til det i Plan 9, men usammenligneligt mere avanceret end i SVR4.
4.4BSD
Det var endnu et skridt tilbage i sammenligning med Solaris. Antallet af filer i hver mappe er blevet reduceret til 8 (selvom en smule øget i senere udgivelser). Sættet af tilgængelige kommandoer er også blevet betydeligt reduceret. En omvendt overgang begyndte at ske, fra filgrænseflader til systemkald. [en]
I moderne versioner af FreeBSD er procfs ved at blive udfaset [4] [5] .
Linux
Linux er noget ude af historien beskrevet ovenfor. Helt fra begyndelsen repræsenterede procfs en universel grænseflade til at hente information fra kernen og ikke kun om processer. Roden indeholder filer (for det meste tekst) og mapper, der giver en række informationer om systemet.
Samtidig udfører procfs næsten ikke sin oprindelige funktion - processtyring . Der er ingen grænseflade til at sende kommandoer, filsystemet giver kun detaljeret information om processerne (og nogle steder giver det dig mulighed for at ændre nogle muligheder, f.eks. /proc/<pid>/oom_adj). [6]
Struktur
*BSD
Hver mappe på øverste niveau indeholder følgende filer:
- ctl er en skrivebeskyttet fil, der understøtter mange operationer, der er skrevet til den som strenge:
- vedhæft - Stopper målprocessen og forbereder opkaldsprocessen for at fejlsøge målet.
- detach - fortsætter udførelsen af målprocessen og fjerner den fra styringen af debuggerprocessen (sidstnævnte behøver ikke at være den kaldende proces).
- run - Fortsætter udførelsen af målprocessen, indtil et signal modtages, et brudpunkt nås, eller målprocessen afsluttes.
- step - udfører en kommando af målprogrammet uden at generere andre signaler.
- vente - venter på, at målprocessen når en stabil tilstand, klar til fejlretning. Målprocessen skal være i denne tilstand, før andre kommandoer tillades.
- dbregs er debug-registre, der svarer til struct-dbregs i <machine/reg.h>. dbregs bruges i øjeblikket kun på i386-arkitekturen.
- etype er typen af den eksekverbare fil, der tilgås af filen .
- fil er et symbolsk link til den fil, hvorfra procesteksten blev læst. Dette kan bruges til at få adgang til proces-id-tabellen eller til at starte en ny kopi af processen. Hvis filen ikke findes, er målretningen "ukendt".
- fpregs er flydende kommaregistre svarende til struct fpregs i <machine/reg.h>. fpregs bruges kun på maskiner med forskellige sæt universal- og flydende kommaregistre.
- map er det virtuelle hukommelseskort over processen.
- mem er det komplette virtuelle hukommelsesbillede af processen. Du kan kun henvise til den adresse, der findes i processen. At læse og skrive til denne fil ændrer processen. At skrive til et tekstsegment gælder kun for denne proces (ændringer vil ikke påvirke andre kopier af denne proces).
- note - bruges til at sende et signal til en proces. Ikke anvendelig.
- notepg - bruges til at sende et signal til en procesgruppe. Ikke anvendelig.
- regs - Giver læse- og skriveadgang til flere procesregistre. Denne fil indeholder struct regs binære datastruktur beskrevet i <machine/reg.h>. regs er kun skrivbar, når processen er stoppet.
- rlimit er en skrivebeskyttet fil, der indeholder den aktuelle og maksimale størrelse. Hver linje har formatet rlimit current max, hvor -1 betyder uendelig.
- status - status for processen. Filen er skrivebeskyttet og indeholder en enkelt linje bestående af felter adskilt af mellemrum:
- kommandonavn
- proces-id
- overordnet proces-id
- procesgruppe-id
- Sessions ID
- major, minor af den administrerede terminal eller -1, -1 ellers
- liste over procesflag: ctty hvis dette er en administreret terminal, sldr hvis processen administrerer en session, noflag hvis ingen af ovenstående flag er indstillet
- processtarttid i sekunder og mikrosekunder adskilt af et komma
- brugertid i sekunder og mikrosekunder adskilt af et komma
- systemtid i sekunder og mikrosekunder adskilt af et komma
- besked ventetid
- procesbilletten, bestående af det faktiske bruger-id og en liste over grupper (hvoraf det første element er det faktiske gruppe-id), adskilt af et komma
- navnet på den vært, som processen kører i, eller "-", hvis processen kører på ubestemt tid
Understøttelse af operativsystem
Links
Kilder
- ↑ 1 2 3 4 En kort historie om /proc (link utilgængeligt) . Arkiveret fra originalen den 2. marts 2012. (ubestemt)
- ↑ proc(4) manualside (UNIX, 8. udgave) (downlink) . Arkiveret fra originalen den 2. marts 2012. (ubestemt)
- ↑ proc(3) manualside (Plan 9) (downlink) . Arkiveret fra originalen den 2. marts 2012. (ubestemt)
- ↑ Hvad laver du til FreeBSD 8? (utilgængeligt link) . Arkiveret fra originalen den 2. marts 2012. (ubestemt)
- ↑ Hvorfor er procfs forældet til fordel for procstat? (freebsd-fs postliste) (downlink) . Arkiveret fra originalen den 2. marts 2012. (ubestemt)
- ↑ proc(5) manualside (Linux) (downlink) . Arkiveret fra originalen den 2. marts 2012. (ubestemt)