• Welcome to TUKE FÓRUM - Fórum pre študentov Technickej Univerzity v Košiciach.
 

Operacne systemy

Started by OsamelyVlk, 10.02.2011, 21:19:31

« predchdzajce - alie »

sulo

Quote from: ursus on  05.05.2011, 10:32:01
caute ako je to s tym fork a execve ? chapem ze execve nahradi ten proces cize sa nevypise nic po execve volani..ale preco mi nepisuje printf pred nim ? aj ked napr do suboru zapise cize ten kod sa nejako vykona...

Skúsil som toto:

#include <stdio.h>
#include <unistd.h>

int main() {
   printf("before");
   //fflush(stdout);
   execlp("echo", "echo", "execlp", NULL);
   printf("after");

   return 0;
}


A vypísalo len:
execlp

Čiže "before" nevypísalo. Pravdepodobne to bude tým, že výstupný buffer sa ešte nevyprázdnil a keďže execlp pôvodný proces prepísalo, nemal sa už ani kedy vyprázdniť. Treba ho k tomu prinútiť, napr. vypísaním nového riadku:
printf("before\n");
alebo cez fflush:
printf("before");
fflush(stdout);


Reťazec "after" sa samozrejme nevypíše nikdy, to je v poriadku.

sulo

Quote from: Jackson on  05.05.2011, 20:45:49
Prosim vas, ako vyzera vas serv2.txt ? Ako vam tam zapisuje?  :ropebanana:

S tými dodanými programami takto:
nula-pr-s-serv1
desat-pr-s-serv1
jeden-pr-s-serv1
dvadsat-pr-s-serv1
dva-pr-s-serv1
tridsat-pr-s-serv1
tri-pr-s-serv1
styridsat-pr-s-serv1
styri-pr-s-serv1
patdesiat-pr-s-serv1

majod

nemate niekto pri odovzdavani zadania problem so signalmi? mne nikdy neprejde kontrolou, pretoze to zastane na p1, pretoze neprijme ziadny signal od proc_pr, ten ma ako posledne vo vystupe "Posielam SIGUSR1 procesu P1." a tym to konci, runner stopne zadanie po 120 sekundach. program mi na mojom linuxe aj na hrone bezi v poriadku

v_oid

#428
cafte,

ako riesite toto:

program zadanie ma vytvorit vsetky zdroje pre ipc

chcem vytvorit pomenovanu pajpu, co neni problem

ale ako to potom odovzdavate tym ostatnym programom - jednoducho si kazdy z nich otvori tu istu pajpu, alebo im nejako odovzdavat nazov tej pajpy (cez argumenty) ?

podobne shared memory. hlavny program vytvori zdielanu pamat s nejakym klucom. hm sice v tomto pripade to neni konstanta, lebo to vymysli ftok. No kazdopadne, ako to potom odovzdavate podprogramom - cez argumenty, alebo jak?

peace out  bq

majod

cez argumenty a pipe nech je radsej nepomenovany

ursus

no ved ze argumenty im to posles tie id-cka co ti vrati shmget, semget, pre pipy im posles tie deskriptory ..atd

p.s. ak proces pr chce citaci koniec pipy, tak logicky bude chciet nepomenovanu..
So this router walks into the doctor's office...
- Doctor, it hurts when IP.

Valj

Quote from: majod on  06.05.2011, 05:27:38
nemate niekto pri odovzdavani zadania problem so signalmi? mne nikdy neprejde kontrolou, pretoze to zastane na p1, pretoze neprijme ziadny signal od proc_pr, ten ma ako posledne vo vystupe "Posielam SIGUSR1 procesu P1." a tym to konci, runner stopne zadanie po 120 sekundach. program mi na mojom linuxe aj na hrone bezi v poriadku

Nie je to tym ze tvoje p1 a p2 sa ukoncia pred tym ako dostanu signal ?
Ak ano tak skus : sigsuspend()

somtoja

Caute je tu niekto kto by si chcel zarobit ?.... Ide o to ze treba spravit OS zadanie ...Ak ma niekto zaujem piste spravu

Valj

Predam zadanie, jedinecne(kontrola originality), s/bez dokumentacie, ponuky + pripadne specifikacie cez PM.

v_oid

#434
cafte. nijak raz neviem rozbehat ten proc_pr

toto je vsetko co dostanem na vypise

Proces pripraveny.
Posielam SIGUSR1 procesu P1.

moj p1 spracuje SIGUSR1 a zapise data do rurky, ale ten proc_pr ich nikdy neprecita (zjavne).

neviete co robim zle?

tu je moj p1:


static FILE *p1_file;
static int r1_write;

void handle_usr1();

int main(int argc, const char **argv) {
rn_check_usage(argc, P1_ARG_COUNT, P1_ARG_COUNT, P1_USAGE);
 r1_write = atoi(argv[0]);
 p1_file = fopen("p1.txt", "r");
rn_plog("p1 ready with pipe %d", r1_write);
signal(SIGUSR1, handle_usr1);
 rn_signal_wait();
}

void handle_usr1() {
 char word[255];
rn_plog("p1 received usr1");
 rn_copy_word_from_stream_to_fildes(p1_file, r1_write);
 rn_signal_wait();
}


a tu je funkcia ktoru tam pouzivam na nakopcenie


void rn_copy_word_from_stream_to_fildes(FILE *stream, int fildes) {
char word[255];
fscanf(stream, "%s", (char *)word);
 rn_plog("copying word %s to %d", word, fildes);
write(fildes, word, strlen(word));
}


ako ten PR vlastne funguje? je tam loop, ktora caka na zapis do r1? ak hej tak to zjavne nefunguje.

a este tu je vystup:


v_oid

no prisiel som na to po dvoch hodinach ...

pri zapisovani do rury treba pridat NEWLINE posrany aby to PR vedel precitat ..

fakt by sa im daco stalo keby zverejnili kod ..

keby aspon desatinu toho usilia co davaju do toho aby sme nekopcili zadania (co aj tak vsetci robia) dali do zrozumitelnosti zadani ...


Valj

19.11.2006
Reťazce pri komunikacii medzi procesmi by mali obsahovat aj znak \n.


Prva vec co zbadas ked sa prihlasujes do systemu na odovzdanie zadania.

sulo

Quote from: Valj on  07.05.2011, 18:47:15

Reťazce pri komunikacii medzi procesmi by mali obsahovat aj znak \n.


Je to trochu zložitejšie. Napríklad pri komunikácii cez rúry musí reťazec obsahovať '\n', ale nesmie byť ukončený znakom NULL (teda aspoň mne to v tom prípade nefungovalo). Naopak, pri komunikácii cez zdieľanú pamäť a sockety by nemal obsahovať '\n', inak sa v logu objavovali záznamy typu:

Prijal som 1. slovo 'nula-pr
'
...

(koniec úvodzoviek na novom riadku, čo nevyzerá dvakrát správne)

V tom druhom prípade treba, samozrejme (narozdiel od prvého), pridať aj znak NULL.

v_oid

Quote from: Valj on  07.05.2011, 18:47:15
19.11.2006
Reťazce pri komunikacii medzi procesmi by mali obsahovat aj znak \n.


Prva vec co zbadas ked sa prihlasujes do systemu na odovzdanie zadania.

no asi to tak nebude

v_oid

neviete mi este niekto povedat, ako ma vyzerat ta zdielana pamat?

v sofii je vytvorena struktura, tu mame pouzit iba string? (to by som cakal)

ursus

co aka struktura .. shmgetnes to, a tak sa shmatnes na jej zaciatok, co ti vrati smernik na prvy bajt a pises tam uz veselo
So this router walks into the doctor's office...
- Doctor, it hurts when IP.

v_oid

hej hej uz dava zmysel secko ... :)

majod

robil niekto uz dokumentaciu?
co znamena:
1.   Text zadania.
- kde je ten text?
2.   Dodefinovanie zadania – špecifikácia obmedzení realizovaných v zadaní. Navrhnuté obmedzenia je nutné konzultovať s cvičiacim.
- ked neprekonzultujem? lebo uz to chcem odovzdat na najblizsom cviku :)
3.   Popis relevantných štruktúr, algoritmov, dátových typov, konštánt apod. súvisiacich s riešenou témou.
-ake struktury a algoritmy, datove typy? kazdu jednu premennu mam zdokumentovat?

8.   Systémová príručka – príručka pre programátora – popis modulov, funkcií, dátových štruktúr, ich vzájomné vzťahy. Signatúry funkcií.
9.   Príručka používateľa  detailný sprievodca programom – účel programu; popis jeho spustenia, použitia; popis a význam parametrov, ich prípustné hodnoty, závislosti, apod. Musí sa podľa nej dať spustiť a ovládať program.
--- to su co????

diky

v_oid

ja sa uz dobru chvilu serkam s odovzdavanim ..

program zadanie mi pise na stderr:

Permission denied
Permission denied

nemam sajnu kde to blbne, any ideas?

filip27

skusal uz niekot odvzdavat zadanie??

ja som to tam skusal dnes uploadnut a mi vypisalo "Odovzdane, nepreslo kontrolou" ...to znamena, ze to sa este len bude kontrolovat a lebo to nepselo systemmo lebo ked som to robil tak mi tam vyskocilo zopar warningov :D ...takze neviem ... ???

revelc

To znamena, ze nieco mas na tom zadani zle... musis ho upravit a odoslat opat...
Mne sa pokial podarilo upravit zadanie tak, aby to bral ten j*****y system, tak to veru nejaky cas trvalo  bu
Čo môžeš urobiť dnes odlož na pozajtra a ziskaš deň voľna.

"I'm a man of simple tastes. I enjoy dynamite...and gunpowder...and gasoline! "

Valj

#446
Quote from: v_oid on  08.05.2011, 03:15:20
ja sa uz dobru chvilu serkam s odovzdavanim ..

program zadanie mi pise na stderr:

Permission denied
Permission denied

nemam sajnu kde to blbne, any ideas?

Program zadanie sa spusta s  presmerovanim z prikazoveho riadku, cize v zadanie.c zrus otvaranie .out a .err suborov

v_oid

neotvaram ziadne subory v zadanie.c

Valj

tak IPC_EXCL pri semaforoch/zdielanej pamati ?

Robokop

#449
kolegovia, kto bol na prednaske, daval ujo sivy prezencku na poslednej prednaske? a ak hej dokedy je cas na referat?