Linux×Ö·ûÉ豸Çý¶¯³ÌÐò¿ª·¢
LinuxϵÄÉ豸Çý¶¯³ÌÐò±»×é֯Ϊһ×éÍê³É²»Í¬ÈÎÎñµÄº¯ÊýµÄ¼¯ºÏ£¬Í¨¹ýÕâЩº¯ÊýʹµÃWindowsµÄÉ豸²Ù×÷ÓÌÈçÎļþÒ»°ã¡£ÔÚÓ¦ÓóÌÐò¿´À´£¬Ó²¼þÉ豸ֻÊÇÒ»¸öÉ豸Îļþ£¬Ó¦ÓóÌÐò¿ÉÒÔÏó²Ù×÷ÆÕͨÎļþÒ»Ñù¶ÔÓ²¼þÉ豸½øÐвÙ×÷£¬Èçopen ()¡¢close ()¡¢read ()¡¢write () µÈ¡£
LinuxÖ÷Òª½«É豸·ÖΪ¶þÀࣺ×Ö·ûÉ豸ºÍ¿éÉ豸¡£×Ö·ûÉ豸ÊÇÖ¸É豸·¢ËͺͽÓÊÕÊý¾ÝÒÔ×Ö·ûµÄÐÎʽ½øÐУ»¶ø¿éÉ豸ÔòÒÔÕû¸öÊý¾Ý»º³åÇøµÄÐÎʽ½øÐС£×Ö·ûÉ豸µÄÇý¶¯Ïà¶Ô±È½Ï¼òµ¥¡£
¡¡¡¡ÏÂÃæÎÒÃÇÀ´¼ÙÉèÒ»¸ö·Ç³£¼òµ¥µÄÐéÄâ×Ö·ûÉ豸£ºÕâ¸öÉ豸ÖÐÖ»ÓÐÒ»¸ö4¸ö×Ö½ÚµÄÈ«¾Ö±äÁ¿int global_var£¬¶øÕâ¸öÉ豸µÄÃû×Ö½Ð×ö"gobalvar"¡£¶Ô"gobalvar"É豸µÄ¶ÁдµÈ²Ù×÷¼´ÊÇ¶ÔÆäÖÐÈ«¾Ö±äÁ¿global_varµÄ²Ù×÷¡£
¡¡¡¡Çý¶¯³ÌÐòÊÇÄں˵ÄÒ»²¿·Ö£¬Òò´ËÎÒÃÇÐèÒª¸øÆäÌí¼ÓÄ£¿é³õʼ»¯º¯Êý£¬¸Ãº¯ÊýÓÃÀ´Íê³É¶ÔËù¿ØÉ豸µÄ³õʼ»¯¹¤×÷£¬²¢µ÷ÓÃregister_chrdev() º¯Êý×¢²á×Ö·ûÉ豸£º
static int __init gobalvar_init(void)
{
¡¡if (register_chrdev(MAJOR_NUM, " gobalvar ", &gobalvar_fops))
¡¡{
¡¡¡¡//…×¢²áʧ°Ü
¡¡}
¡¡else
¡¡{
¡¡¡¡//…×¢²á³É¹¦
¡¡}
}
¡¡¡¡ÆäÖУ¬register_chrdevº¯ÊýÖеIJÎÊýMAJOR_NUMΪÖ÷É豸ºÅ,"gobalvar"ΪÉ豸Ãû£¬gobalvar_fopsΪ°üº¬»ù±¾º¯ÊýÈë¿ÚµãµÄ½á¹¹Ì壬ÀàÐÍΪfile_operations¡£µ±gobalvarÄ£¿é±»¼ÓÔØÊ±£¬gobalvar_init±»Ö´ÐУ¬Ëü½«µ÷ÓÃÄں˺¯Êýregister_chrdev£¬°ÑÇý¶¯³ÌÐòµÄ»ù±¾Èë¿ÚµãÖ¸Õë´æ·ÅÔÚÄں˵Ä×Ö·ûÉ豸µØÖ·±íÖУ¬ÔÚÓû§½ø³Ì¶Ô¸ÃÉ豸ִÐÐϵͳµ÷ÓÃʱÌṩÈë¿ÚµØÖ·¡£
¡¡¡¡ÓëÄ£¿é³õʼ»¯º¯Êý¶ÔÓ¦µÄ¾ÍÊÇÄ£¿éÐ¶ÔØº¯Êý£¬ÐèÒªµ÷ÓÃregister_chrdev()µÄ"·´º¯Êý" unregister_chrdev()£º
static void __exit gobalvar_exit(void)
{
¡¡if (unregister_chrdev(MAJOR_NUM, " gobalvar "))
¡¡{
¡¡¡¡//…Ð¶ÔØÊ§°Ü
¡¡}
¡¡else
¡¡{
¡¡¡¡//…Ð¶ÔØ³É¹¦
¡¡}
}
¡¡¡¡Ëæ×ÅÄں˲»¶ÏÔö¼ÓÐµĹ¦ÄÜ£¬file_operations½á¹¹ÌåÒÑÖð½¥±äµÃÔ½À´Ô½´ó£¬µ«ÊÇ´ó¶àÊýµÄÇý¶¯³ÌÐòÖ»ÊÇÀûÓÃÁËÆäÖеÄÒ»²¿·Ö¡£¶ÔÓÚ×Ö·ûÉ豸À´Ëµ£¬ÒªÌṩµÄÖ÷ÒªÈë¿ÚÓУºopen ()¡¢release ()¡¢read ()¡¢write ()¡¢ioctl ()¡¢llseek()¡¢poll()µÈ¡£
¡¡¡¡open()º¯Êý¡¡¶ÔÉè±¸ÌØÊâÎļþ½øÐÐopen()ϵͳµ÷ÓÃʱ£¬½«µ÷ÓÃÇý¶¯³ÌÐòµÄopen () º¯Êý£º
int (*open)(struct inode * ,struct file *);
¡¡¡¡ÆäÖвÎÊýinodeΪÉè±¸ÌØÊâÎļþµÄinode (Ë÷Òý½áµã) ½á¹¹µÄÖ¸Õ룬²ÎÊýfileÊÇÖ¸ÏòÕâÒ»É豸µÄÎļþ½á¹¹µÄÖ¸Õë¡£open()µ
Ïà¹ØÎĵµ£º
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define NTP_SERVER "clock.via.net"
#define ......
LinuxϵĽø³ÌͨÐÅÊֶλù±¾ÉÏÊÇ´ÓUnixƽ̨ÉϵĽø³ÌͨÐÅÊֶμ̳жøÀ´µÄ¡£¶ø¶ÔUnix·¢Õ¹×ö³öÖØ´ó¹±Ï×µÄÁ½´óÖ÷Á¦AT&TµÄ±´¶ûʵÑéÊÒ¼°BSD£¨¼ÓÖÝ´óѧ²®¿ËÀû·ÖУµÄ²®¿ËÀûÈí¼þ·¢²¼ÖÐÐÄ£©ÔÚ½ø³Ì¼äͨÐÅ·½ÃæµÄ²àÖØµãÓÐËù²»Í¬¡£Ç°Õß¶ÔUnixÔçÆÚµÄ½ø³Ì¼äͨÐÅÊֶνøÐÐÁËϵͳµÄ¸Ä½øºÍÀ©³ä£¬ÐγÉÁË“ ......
RPM ÊÇ RedHat Package Manager µÄËõд£¬Èí¼þ°ü¹ÜÀí¹¤¾ß¡£
RPMÎļþÔÚLINUXϵͳÖеݲװ×îΪ¼ò±ã¡£
LinuxÈí¼þ°ü£¬³£¼ûµÄ¸ñʽ°üÀ¨ÓÐrpm,deb,tar,gz,tgz,zip,bz2µÈµÈ¡£¼¸ºõÿ¸ölinuxÈí¼þ¶¼»áÌṩtarµÄ¸ñʽµÄÈí¼þ°ü£¬
ÒòΪÕâÖÖ¸ñʽµÄÈí¼þ°üÈκΰ汾µÄlinux¶¼Ö§³Ö£¬ËùÒÔÖÁÉÙÒªÁ˽âtarºÍrpmµÃʹÓ÷½·¨¡£
rpm¿ÉνÊÇRedhat¹«Ë¾µ ......
½ø³ÌÔÚ²Ù×÷ϵͳÖж¼ÓÐÒ»¸ö»§¿Ú£¬ÓÃÓÚ±íʾÕâ¸ö½ø³Ì¡£Õâ¸ö»§¿Ú²Ù×÷ϵͳ±»³ÆÎªPCB£¨½ø³Ì¿ØÖƿ飩£¬ÔÚlinuxÖоßÌåʵÏÖÊÇ
task_structÊý¾Ý½á¹¹£¬Ëü¼Ç¼ÁËһϼ¸¸öÀàÐ͵ÄÐÅÏ¢£º
1.״̬ÐÅÏ¢£¬ÀýÈçÕâ¸ö½ø³Ì´¦ÓÚ¿ÉÖ´ÐÐ״̬£¬ÐÝÃߣ¬¹ÒÆðµÈ¡£
2.ÐÔÖÊ£¬ÓÉÓÚunixÓкܶà±äÖÖ£¬½ø³ÌÓÐ×Ô¼º¶ÀÌØµÄÐÔÖÊ¡£
3.×ÊÔ´£¬×ÊÔ´µÄÁ´½Ó±ÈÈçÄڴ棬 ......