banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Lập trình hệ điều hành  XML
  [Question]   Lập trình hệ điều hành 26/05/2011 13:36:18 (+0700) | #1 | 237932
mrbean_pfiev
Member

[Minus]    0    [Plus]
Joined: 23/02/2008 01:00:20
Messages: 2
Offline
[Profile] [PM]
Chào mọi người,
Mình đang phải viết một hệ điều hành bằng C,Assembleur trên kiến trúc Intel 32. Mình không biết phải làm thế nào cả nên lập topic này mong mọi người giúp đỡ.
Mình đang ở trong giai đoạn tạo các tiến trình (Process), người ta đưa sắn các hàm như:
int start(int (*ptfunc)(void *), unsigned long ssize, int prio, const char *name, void *arg);
để tạo mới 1 process với ssize là size của process trong pipe, ptfunc là chương trình tương ứng khi process được khởi tạo, arg là tham số của chương trình , prio là mức độ ưu tiên, name là tên.
Mình không biết phải viết hàm này thế nào, mong mọi người giúp đỡ.
Không biết có phải là dùng fork() để tạo processus mới không? Và làm sao để khởi tạo những thông số trong hàm start trên.
Mong nhận được ý kiến đóng góp của mọi người
[Up] [Print Copy]
  [Question]   Lập trình hệ điều hành 29/05/2011 09:42:29 (+0700) | #2 | 238137
[Avatar]
panfider
Member

[Minus]    0    [Plus]
Joined: 12/05/2010 01:51:04
Messages: 448
Offline
[Profile] [PM] [Email]
bạn nên đọc sơ qua manual của Intel( có trên trang web intel.com)
viết được các ngắt của bios để viết setup của kernel.
bạn cũng nên biết các xài git scm để chia sẽ code cho mọi người cùng viết với bạn
[Unix] live free or die
[Up] [Print Copy]
  [Question]   Lập trình hệ điều hành 30/05/2011 00:23:29 (+0700) | #3 | 238180
[Avatar]
van7hu
Member

[Minus]    0    [Plus]
Joined: 03/07/2010 02:38:47
Messages: 63
Location: Thuỷ điện Hoà Bình
Offline
[Profile] [PM]

mrbean_pfiev wrote:
Chào mọi người,
Mình đang phải viết một hệ điều hành bằng C,Assembleur trên kiến trúc Intel 32. Mình không biết phải làm thế nào cả nên lập topic này mong mọi người giúp đỡ.
Mình đang ở trong giai đoạn tạo các tiến trình (Process), người ta đưa sắn các hàm như:
int start(int (*ptfunc)(void *), unsigned long ssize, int prio, const char *name, void *arg);
để tạo mới 1 process với ssize là size của process trong pipe, ptfunc là chương trình tương ứng khi process được khởi tạo, arg là tham số của chương trình , prio là mức độ ưu tiên, name là tên.
Mình không biết phải viết hàm này thế nào, mong mọi người giúp đỡ.
Không biết có phải là dùng fork() để tạo processus mới không? Và làm sao để khởi tạo những thông số trong hàm start trên.
Mong nhận được ý kiến đóng góp của mọi người 


fork() là syscall của linux, không hiểu nó có liên quan gì ở đây hả bro?
https://www.facebook.com/buivan.thu.94
Được phục vụ cho tổ quốc, đó là một niềm vinh hạnh lớn lao..
[Up] [Print Copy]
  [Question]   Lập trình hệ điều hành 30/05/2011 06:57:46 (+0700) | #4 | 238184
[Avatar]
minhhath
Member

[Minus]    0    [Plus]
Joined: 22/11/2010 10:03:38
Messages: 91
Location: Team unknow
Offline
[Profile] [PM]
mình có code này cho bạn nè: "CHƯƠNG TRÌNH C PHÂN NHÁNH QUÁ TRÌNH"
Code:
int main()
{
pid_t pid;
pid=fork();
if(pid<0){
fprintf(stderr,"that bai");
exit(-1);
}
else if(pid==0){
execlp("/bin/ls","ls",NULL);
}
else{
wait(NULL);
printf("thanh cong")
exit(0);
}
}

[Up] [Print Copy]
  [Question]   Lập trình hệ điều hành 31/05/2011 14:05:54 (+0700) | #5 | 238291
mrbean_pfiev
Member

[Minus]    0    [Plus]
Joined: 23/02/2008 01:00:20
Messages: 2
Offline
[Profile] [PM]
Đúng là cài này của mình không dùng được fork. Mình đã đọc về kiến trúc của Intel nhưng mà vẫn không hiểu cách tạo process thế này. Thầy giáo bảo phải sử dụng bảng process.
Mình phải làm một hệ điều hành từ không có gì ban đầu nên rất khó để thực hiện.
Đây là tất cả các hàm mình phải viết :
int start(int (*ptfunc)(void *), unsigned long ssize, int prio, const char *name, void *arg) {
}

int chprio(int pid, int newprio) {
}
int getpid(void) {
}

int getprio(int pid) {
}

void exit(int retval) {
}

int kill(int pid) {
}

int waitpid(int pid, int *retvalp) {
}

Không biết mọi người có thể giúp đỡ thêm gì mình không? Vì vấn đề lập trình này quá khó đối với mình, không
đơn giản như việc dùng fork để tạo process trong linux.
[Up] [Print Copy]
  [Question]   Lập trình hệ điều hành 03/06/2011 23:14:49 (+0700) | #6 | 238786
[Avatar]
van7hu
Member

[Minus]    0    [Plus]
Joined: 03/07/2010 02:38:47
Messages: 63
Location: Thuỷ điện Hoà Bình
Offline
[Profile] [PM]

mrbean_pfiev wrote:
Đúng là cài này của mình không dùng được fork. Mình đã đọc về kiến trúc của Intel nhưng mà vẫn không hiểu cách tạo process thế này. Thầy giáo bảo phải sử dụng bảng process.
Mình phải làm một hệ điều hành từ không có gì ban đầu nên rất khó để thực hiện.
Đây là tất cả các hàm mình phải viết :
int start(int (*ptfunc)(void *), unsigned long ssize, int prio, const char *name, void *arg) {
}

int chprio(int pid, int newprio) {
}
int getpid(void) {
}

int getprio(int pid) {
}

void exit(int retval) {
}

int kill(int pid) {
}

int waitpid(int pid, int *retvalp) {
}

Không biết mọi người có thể giúp đỡ thêm gì mình không? Vì vấn đề lập trình này quá khó đối với mình, không
đơn giản như việc dùng fork để tạo process trong linux. 

mình cũng đang chỉ tập tành mấy thứ này, không dám bình loạn nhiều smilie
có điều mình cảm thấy câu hỏi của bạn có vẻ mơ hồ (~ quá chung chung), điều này có thể khiến cho những người đọc khó có khả năng để giúp bạn.
mục đích của bạn ở đây là gì? viết một hệ điều hành để qua kỳ thi hay một cái gì khác?

mrbean_pfiev wrote:

Mình phải làm một hệ điều hành từ không có gì ban đầu nên rất khó để thực hiện.
 

Vậy, hệ điều hành của bạn đến đâu rồi?, nó có những phần gì? đến mức quản lý process chứng tỏ bạn đã ở khá xa trong lập trình hệ điều hành (ít nhất là với một "gà" như mình smilie, mình chưa bao giờ thực sự làm được một cái này)

mrbean_pfiev wrote:

Đây là tất cả các hàm mình phải viết :
int start(int (*ptfunc)(void *), unsigned long ssize, int prio, const char *name, void *arg) {
}

int chprio(int pid, int newprio) {
}
int getpid(void) {
}

int getprio(int pid) {
}

void exit(int retval) {
}

int kill(int pid) {
}

int waitpid(int pid, int *retvalp) {
}
 

lập trình hệ điều hành yêu cầu kiến thức rât tốt về C và ASM, nếu bạn có hứng thú trong lập trình hđh thì nên nhớ một quote về C

candide wrote:

C is a low level language designed to make assembly "easier", useful for device drivers or operating systems. Thusly, one has to maintain buffers, memory, and various low level information. C is not meant to be used for everyday applications, a common misconception.
 
https://www.facebook.com/buivan.thu.94
Được phục vụ cho tổ quốc, đó là một niềm vinh hạnh lớn lao..
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|