bobiczdoh

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » bobiczdoh » Учеба » Когда Лаба По Инфе ?!


Когда Лаба По Инфе ?!

Сообщений 1 страница 17 из 17

1

Собственно, в котором часу намечается данное событие?

0

2

Запускаетсяж
почти работает
ненужное удалить
нужное дорисовать

Код:
#include <iostream>
using namespace std;

class Computer;
class Kernel;


class Disp{
public:
private:
};

class Device{
public:
	int vendor_id,product_id;
	// ...
	Device(){vendor_id=product_id=666;}
	void check();
	void out();
};

class Process{
private:
	int PID;
	int mem;
public:
	Process(){PID=-1;mem=0;};
	~Process(){};
	void create(int pid,int m){
PID=pid;
mem=m;
	};
	void run();
	void kill(){};
	void postmsg(int msg);
	int getPID(){return PID;};
};


class Kernel{
private:
	int nextPID;
	int proccnt;

	Computer * comp;
public:
	Device dev[4];// drivers
	void ps();
	void load(Computer * c);
	void run();
	void sendmsg(int pid,int msg);
	Process* popen();
	
	Kernel(){
nextPID=1;
dev[0].product_id=69;// Keyboard
dev[1].product_id=13;// Ethernet adapter
	};
	~Kernel(){};
};

class Memory{
public:
	Memory(){}
	~Memory(){}
	Process proc[10];
	int used;
	int memsize;
	void loadKernel(Computer * c){
this->ker.load(c);
	}
	Kernel* getKernel(){
return &ker;
	}
private:
	Kernel ker;
};






class Computer{
public:
	Memory mem;
	Kernel * accessKernel(){
return this->mem.getKernel();
	};
	// void powerOn(){};
	Computer(){
	// 1) POST:
	// check memory :)
this->mem.memsize=512;
	// 2) load kernel
this->mem.loadKernel(this);
	// 3) launch operating system
//this->mem.getKernel();
	};
	~Computer(){};
};


Kernel* ker;
int main(int argc,char ** argv){
	Computer comp;
	ker=comp.accessKernel();
	ker->popen();
	ker->popen();
	ker->popen();
	ker->ps();
	ker->run();
	return 0;
}



void Kernel::ps(){
	int a;
	for(a=0;a<10;a++){
if(comp->mem.proc[a].getPID()!=-1){
	cout << comp->mem.proc[a].getPID() << endl;
}
	}
}
void Kernel::load(Computer * c){
	comp=c;
}
void Kernel::run(){
	while(1){
int a;
for(a=0;a<10;a++){
if(comp->mem.proc[a].getPID()!=-1){
	comp->mem.proc[a].run();
}
	}
	}
}
void  Kernel::sendmsg(int pid,int msg){
	comp->mem.proc[pid].postmsg(msg);
}

Process* Kernel::popen(){
	int a;
	for(a=0;a<10;a++){
if(comp->mem.proc[a].getPID()==-1){
	comp->mem.proc[a].create(nextPID++,10);
	comp->mem.used+=10;
	return &comp->mem.proc[a];
}
	}
}



void Process::run(){
	while(1){
switch(this->PID){
case 1:{ // device driver
	char c;
	int a;
	for(a=0;a<2;a++){
ker->dev[a].check();
	}
}break;
case 2:{ // LAN mgr

}break;
}
	}
}

void Process::postmsg(int msg){

	switch(this->PID){
	case 1:{ // device driver
	}break;
	case 2:{ // LAN mgr
cout << msg << endl;
	}break;
	}
}



void Device::check(){
	if(product_id==69){//keyboard
char c;
cin >> c;
switch(c){
case 'q':{
// poweroff
// to be written
}break;
default:
	ker->sendmsg(2,c);
}
	}
}
void Device::out(){}

0

3

в 9 утра
но ничего путного нам не сказали
всё присылать на мыло вместе с отчётом

0

4

Daшуnя написал(а):

в 9 утра
но ничего путного нам не сказали
всё присылать на мыло вместе с отчётом

То есть?
Черкинский принимает лабы по электронной почте?
А в институте его не будет?

0

5

будет, но он редко появляется, поэтому он предложил отсылать ему на почту

0

6

-

Отредактировано Daшуnя (2006-04-05 22:14:00)

0

7

Обратите внимание на очередное обновление на сайте.

З.Ы. прикольная строчка из одной из лаб (вроде Светкина):
if(Fl[i] != NULL)
    delete Fl[i];
Fl[i] = NULL;
интересно, что же имелось в виду?

0

8

Саныч, пошли черкинскому на почту исходник линов - как никак лаба по ОС.  :lol:  :lol:  :lol:

0

9

Долго угарал над следующей строчкой из лабы Марухина:

Код:
F_num(void):int;

Сначала я даже не понял что имелось в виду (саффсем паскаль запыл).

0

10

Саныч (или Андрюха), ответьте как программист - программисту на такой вопрос:
Что такое

Код:
#pragma once

и почему в студии она не работает.
На сколько я понял это замена следующему:

Код:
#ifndef Х%Й_H
#define Х%Й_H
....
#endif

?

З.Ы. мля, четыре поста подряд без ответа...

0

11

Я могу ответить только ХЗ.  :)

0

12

sometype * pSomething=NULL;

...
void Cleanup(){
    if(pSomething){
              pSomething->izmal4it_na("Melkiye kooso4ki");
              pSomething->srovnati_z_zemlei();
              V_Topku( pSomething);
              delete pSomething;
              pSomething=NULL;
    }
}

В большинстве случаев NULL==0, поэтому условие цикла корректно.
Такие конструкции часто используются для безопасного уничтожения объектов.
Если некоторый объект не был создан, free(NULL)  и fclose(0) вызовет ошибку только на черезжопузделанных компиляторах, но pSomething->srovnati_z_zemlei() скорее всего будет рухать везде.

0

13

не понял, зачем тебе нужен прагма ванс, если всегда используется конструкция #ifndef ..., как ты и сам знаешь.
В одной из лаб от второй группы нашел? Я, честно говоря, с прагмой никогда не сталкивался (как я тебе уже говорил).

Насчет if (something) free(something) -- я не успел ответить раньше Саныча, подтверждаю его слова.
Я, кстати, постоянно использую эту конструкцию (на работе приучили)).

Отредактировано Nagan (2006-04-08 00:03:54)

0

14

прагму я, как уже говорил, использовал только для подключения файла ресурсов

0

15

Обратите внимание, на сайте появилось что-то вроде 2-й лабы. Сдавать в сыром виде КРАЙНЕ не рекомендуется.

0

16

Пытался сделать 3-ю лабу, оказалось что я её уже сделал во 2-й... :(

0

17


Вы здесь » bobiczdoh » Учеба » Когда Лаба По Инфе ?!