![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| High Level Programming Post frågor om C, C + +, Java, SQL och andra programmeringsspråk här. |
Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Senaste Inlägg |
| semaforen | raguramtgr | UNIX for Dummies Frågor & Svar | 7 | 06-15-2009 10:39 |
| Semaforen | Jaken | Shell-programmering och Skript | 2 | 04-04-2009 06:10 |
| dmidecode, RAM-hastighet \u003d "Current Speed: Okänt" | Santi | Filsystem, diskar och Minne | 0 | 02-16-2006 06:16 |
| Semaforen | vjsony | UNIX for Dummies Frågor & Svar | 3 | 04-07-2003 03:06 |
| semaforen | yls177 | UNIX for Dummies Frågor & Svar | 1 | 10-09-2002 12:18 |
|
|
LinkBack | Thread Tools | Sök i denna tråd |
Omdöme:
|
Visningslägen |
|
||||
|
semaforen åtkomsttid
Jag undersöker några låsa systemet med hjälp av semaforer. Att utvärdera grundläggande systemet hastighet jag köra en slinga för att få några semaforen info och visa den: samtidigt:; göra. / semshow; gjort> res.txt Jag har kört på 3 lådor - två liknande moderna HP Xeon lådor, en kör SCO OpenServer 5, den andra är Fedora 2.6.9 och en gammal PIII rutan under modern Linux (har någon info). Resultaten är mycket motverka intuitiv: H / W | OS | avg antalet körningar ber sek ---- | --- | ------------------------- Xeon | SCO | 1700 Xeon | Fedora | 500 PIII | Linux (senaste distributioner, okända) | 900 Alla tre systemen var ganska inaktiv på provmätningen temne. Jag skulle vilja fråga, vad skulle de faktorer som gör antika Unix överträffa moderna OSes också, hur kommer PIII fält överträffa moderna Xeon rutan under liknande OS. Alla ponters skulle uppskattas. Den semshow program är mycket grundläggande, se lista nedan: Kod:
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/timeb.h>
#include <time.h>
#include "semlib.h"
#define MODE_CREATE 0
#define MODE_REMOVE 1
key_t IPCKEY;
main(int argc, char *argv[])
{
int sid, i;
pid_t last_rpid, last_wpid;
char dbuf[80];
union semun arg;
unsigned short vals[NSEMS];
struct timeb tb;
struct tm *tp;
if((IPCKEY = get_ipc_key()) == -1)
{
errexit("Can Not Obtain IPC Key");
}
if((sid = semget(IPCKEY, NSEMS, 0)) == -1)
{
errexit("Can Not Get Semaphore ID");
}
memset(vals, 0, sizeof(vals));
arg.array = &vals[0];
if(semctl(sid, NSEMS, GETALL, arg) == -1)
{
errexit("Can Not Get Semaphore Values");
}
if((last_rpid = semctl(sid, RDLOCK, GETPID)) == -1)
{
errexit("Can Not Get Semaphore R-Pid");
}
if((last_wpid = semctl(sid, WRLOCK, GETPID)) == -1)
{
errexit("Can Not Get Semaphore W-Pid");
}
ftime(&tb);
tp = localtime(&tb.time);
strftime(dbuf, sizeof(dbuf) - 1, "%T", tp);
printf("%12li.%03i %s RD:[%i] WR:[%i] %i/%i\n",
tb.time, tb.millitm, dbuf,
vals[RDLOCK], vals[WRLOCK],
last_rpid, last_wpid);
exit(0);
}
semlib.h har dessa defs: Kod:
#define NSEMS 2
#define RDLOCK 0
#define WRLOCK 1
union semun {
int val;
struct semid_ds *buf;
unsigned short *array;
};
|