LinuxÄÚºËÖÐÓÃÓÚͬ²½µÄ¼¸ÖÖ»úÖÆ¼¯ÖÐÆðÀ´·ÖÎö£¬Ç¿µ÷ÁËËüÃÇÖ®¼äÔÚʵÏÖºÍʹÓÃÉϵIJ»Í¬¡£
¡¡¡¡Í¬²½Í¨³£ÊÇΪÁË´ïµ½¶àÏß³ÌÐͬµÄÄ¿µÄ¶øÉè¼ÆµÄÒ»ÖÖ»úÖÆ£¬Í¨³£°üº¬Òì²½ÐźŻúÖÆºÍ»¥³â»úÖÆ×÷ΪÆäʵÏֵĵײ㡣ÔÚLinux 2.4ÄÚºËÖÐÒ²ÓÐÏàÓ¦µÄ¼¼ÊõʵÏÖ£¬°üÀ¨ÐźÅÁ¿¡¢×ÔÐýËø¡¢Ô×Ó²Ù×÷ºÍµÈ´ý¶ÓÁУ¬ÆäÖÐÔ×Ó²Ù×÷ºÍµÈ´ý¶ÓÁÐÓÖÊÇʵÏÖÐźÅÁ¿µÄµ×²ã¡£
¡¡¡¡
¡¡¡¡Ò». µÈ´ý¶ÓÁкÍÒì²½ÐźÅ
¡¡¡¡
¡¡¡¡wait queueºÜÔç¾Í×÷Ϊһ¸ö»ù±¾µÄ¹¦Äܵ¥Î»³öÏÖÔÚLinuxÄÚºËÀïÁË£¬ËüÒÔ¶ÓÁÐΪ»ù´¡Êý¾Ý½á¹¹£¬Óë½ø³Ìµ÷¶È»úÖÆ½ôÃܽáºÏ£¬Äܹ»ÓÃÓÚʵÏÖºËÐĵÄÒ첽ʼþ֪ͨ»úÖÆ¡£ÎÒÃÇ´ÓËüµÄʹÓ÷¶Àý×ÅÊÖ£¬¿´¿´µÈ´ý¶ÓÁÐÊÇÈçºÎʵÏÖÒì²½ÐźŹ¦Äܵġ£
¡¡¡¡
¡¡¡¡ÔÚºËÐÄÔËÐйý³ÌÖУ¬¾³£»áÒòΪijЩÌõ¼þ²»Âú×ã¶øÐèÒª¹ÒÆðµ±Ç°Ị̈߳¬Ö±ÖÁÌõ¼þÂú×ãÁ˲żÌÐøÖ´ÐС£ÔÚ2.4ÄÚºËÖÐÌṩÁËÒ»×éнӿÚÀ´ÊµÏÖÕâÑùµÄ¹¦ÄÜ£¬ÏÂÃæµÄ´úÂë½ÚÑ¡×Ôkernel/printk.c£º
¡¡¡¡
¡¡¡¡ unsigned long log_size;
¡¡¡¡1: DECLARE_WAIT_QUEUE_HEAD(log_wait);...
¡¡¡¡4: spinlock_t console_lock = SPIN_LOCK_UNLOCKED;...
¡¡¡¡ int do_syslog(int type,char *buf,int len){
¡¡¡¡ ...
¡¡¡¡2: error=wait_event_interruptible(log_wait,log_size);
¡¡¡¡ ......
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <errno.h>
const char * pFileName = "/home/liliang/dirTemp/temp/";
// ERROR_CODE
// SUCC_CODE
#define MAX_FTP_DIRECTORY_LEN 1024
#define IMP_SUCCESS 0
#define IMP_FAIL 1
int checkDirectory(const char *pDir);
const char cSlash = '/';
int main()
{
checkDirectory(pFileName);
return 1;
}
int checkDirectory(const char *pDir)
{
int ret = 0;
struct stat dirBuf;
char cDir[MAX_FTP_DIRECTORY_LEN] = {0};
char cTempDir[MAX_FTP_DIRECTORY_LEN] = {0};
strcpy(cDir, pDir);
if (pDir[strle ......
Linux²é¿´Ó²¼þÐÅÏ¢ÃüÁî
1.²é¿´CPUÐÅÏ¢
cat /proc/cpuinfo
2.²é¿´ÄÚ´æÐÅÏ¢
cat /proc/meminfo
free
vmstat
3.²é¿´Ó²ÅÌÐÅÏ¢
fdisk -l
df -lh
4.²é¿´Äں˰汾ÐÅÏ¢
cat /proc/version
uname -r
lsb_release -a
5.²é¿´ÎļþÕ¼Óÿռä
du
6.²é¿´ÏµÍ³ÐÅÏ¢
dmesg
7.²é¿´¶Ë¿ÚÐÅÏ¢
netstat
8.²é¿´32λ»¹ÊÇ64λ
getconf LONG_BIT
9.²é¿´ÖжÏÐÅÏ¢
cat /proc/interrupts
10.É豸io¶Ë¿Ú
cat /proc/ioports
11.pciÉ豸ÐÅÏ¢
cat /proc/pci
12.swap·ÖÇøÐÅÏ¢
cat /proc/swaps
13.²é¿´ÏµÍ³Äں˵ÈÐÅÏ¢
uname -a
14.²é¿´ÒѾ°²×°µÄÈí¼þ
rpm -qa
15.²é¿´redhatµÄ°æ±¾ÒÔ¼°¸üа汾
cat /etc/redhat-release ......
5.3.2 É豸ÀàÐÍ·ÖÀà
×ÝÀÀlinux/driversĿ¼£¬´ó¸Å»¹ÓÐ35¸öÒÔÉϵÄ×ÓĿ¼£¬Ã¿¸ö×ÓĿ¼»ù±¾ÉϾʹú±íÁËÒ»ÖÖÉ豸Çý¶¯£¬ÓÐatm¡¢block¡¢char¡¢misc¡¢input¡¢net¡¢usb¡¢sound¡¢videoµÈ¡£ÕâÀïÖ»ÃèÊöÔÚǶÈëʽϵͳÀïÃæÓõÃ×îΪ¹ã·ºµÄ3ÖÖÉ豸¡£
1£®×Ö·ûÉ豸£¨char device£©
×Ö·ûÉ豸ÊÇLinux×î¼òµ¥µÄÉ豸£¬¿ÉÒÔÏñÎļþÒ»Ñù·ÃÎÊ¡£³õʼ»¯×Ö·ûÉ豸ʱ£¬ËüµÄÉ豸Çý¶¯³ÌÐòÏòLinuxµÇ¼Ç£¬²¢ÔÚ×Ö·ûÉ豸ÏòÁ¿±íÖÐÔö¼ÓÒ»¸ödevice_structÊý¾Ý½á¹¹ÌõÄ¿£¬Õâ¸öÉ豸µÄÖ÷É豸±êʶ·ûÓÃ×öÕâ¸öÏòÁ¿±íµÄË÷Òý¡£Ò»¸öÉ豸µÄÖ÷É豸±êʶ·ûÊǹ̶¨µÄ¡£chrdevsÏòÁ¿±íÖеÄÿһ¸öÌõÄ¿£¬Ò»¸ödevice_structÊý¾Ý½á¹¹£¬°üÀ¨Á½¸öÔªËØ£ºÒ»¸öµÇ¼ÇÉ豸Çý¶¯³ÌÐòÃû³ÆµÄÖ¸ÕëºÍÒ»¸öÖ¸ÏòÒ»×éÎļþ²Ù×÷µÄÖ¸Õë¡£¿ÉÒԲο¼µÄ´úÂëÊÇinclude/linux/ major.h¡£
Ò»°ãÀ´ËµÏñÊó±ê¡¢´®¿Ú¡¢¼üÅ̵ÈÉ豸¶¼ÊôÓÚ×Ö·ûÉ豸¡£
2£®¿éÉ豸£¨block device£©
¿éÉ豸ÊÇÎļþϵͳµÄÎïÖÊ»ù´¡£¬ËüÒ²¿ÉÒÔÏñÎļþÒ»Ñù±»·ÃÎÊ¡£LinuxÓÃblkdevsÏòÁ¿±íά»¤ÒѾµÇ¼ÇµÄ¿éÉ豸Îļþ¡£ËüÏñchrdevsÏòÁ¿±íÒ»Ñù£¬Ê¹ÓÃÉ豸µÄÖ÷É豸ºÅ×÷ΪË÷Òý¡£ËüµÄÌõĿҲÊÇdevice_structÊý¾Ý½á¹¹¡£Óë×Ö·ûÉ豸²»Í¬µÄÊÇ£¬¿éÉ豸·ÖΪSCSIÀàºÍIDEÀà¡£ÏòLinuxÄں˵ǼDz¢ÏòºËÐÄÌṩÎļþ²Ù×÷¡£Ò»ÖÖ¿ ......
LinuxϵͳÆô¶¯¹ý³Ì
±¾ÎÄÒÔRedHat9.0ºÍi386ƽ̨ΪÀý£¬ÆÊÎöÁË´ÓÓû§´ò¿ªµçÔ´Ö±µ½ÆÁÄ»³öÏÖÃüÁîÐÐÌáʾ·ûµÄÕû¸öLinuxÆô¶¯¹ý³Ì¡£²¢ÇÒ½éÉÜÁËÆô¶¯ÖÐÉæ¼°µ½µÄ¸÷ÖÖÎļþ¡£
µ±Óû§´ò¿ªPCµÄµçÔ´£¬BIOS¿ª»ú×Լ죬°´BIOSÖÐÉèÖÃµÄÆô¶¯É豸(ͨ³£ÊÇÓ²ÅÌ)Æô¶¯£¬½Ó×ÅÆô¶¯É豸Éϰ²×°µÄÒýµ¼³ÌÐòlilo»ògrub¿ªÊ¼Òýµ¼ Linux£¬LinuxÊ×ÏȽøÐÐÄں˵ÄÒýµ¼£¬½ÓÏÂÀ´Ö´ÐÐinit³ÌÐò£¬init³ÌÐòµ÷ÓÃÁËrc.sysinitºÍrcµÈ³ÌÐò£¬rc.sysinitºÍrcµ±Íê³Éϵͳ³õʼ»¯ºÍÔËÐзþÎñµÄÈÎÎñºó£¬·µ»Øinit£»initÆô¶¯ÁËmingettyºó£¬´ò¿ªÁËÖն˹©Óû§µÇ¼ϵͳ£¬Óû§µÇ¼³É¹¦ºó½øÈëÁËShell£¬ÕâÑù¾ÍÍê³ÉÁË´Ó¿ª»úµ½µÇ¼µÄÕû¸öÆô¶¯¹ý³Ì¡£
µÚÒ»²¿·Ö£ºÄں˵ÄÒýµ¼(ºËÄÚÒýµ¼)
¡¡¡¡Red Hat9.0¿ÉÒÔʹÓÃlilo»ògrubµÈÒýµ¼³ÌÐò¿ªÊ¼Òýµ¼Linuxϵͳ£¬µ±Òýµ¼³ÌÐò³É¹¦Íê³ÉÒýµ¼ÈÎÎñºó£¬Linux´ÓËüÃÇÊÖÖнӹÜÁËCPUµÄ¿ØÖÆÈ¨£¬È»ºóCPU¾Í¿ªÊ¼Ö´ÐÐLinuxµÄºËÐÄÓ³Ïó´úÂ룬¿ªÊ¼ÁËLinuxÆô¶¯¹ý³Ì¡£ÕâÀïʹÓÃÁ˼¸¸ö»ã±à³ÌÐòÀ´Òýµ¼Linux£¬ÕâÒ»²½·º¼°µ½LinuxÔ´´úÂëÊ÷Öеēarch/i386/boot”ϵÄÕ⼸¸öÎļþ£ºbootsect.S¡¢setup.S¡¢video.SµÈ¡£
¡¡ ÆäÖÐbootsect.SÊÇÉú³ÉÒýµ¼ÉÈÇøµÄ»ã±àÔ´Â룬ËüÍê³É¼ÓÔØ¶¯×÷ºóÖ±½ÓÌø×ªµ½setup.SµÄ³ÌÐòÈë¿Ú¡£setup.SµÄÖ÷Òª¹¦ÄÜ ......
2. linux/kernel/mktime.c
/*
* PS. I hate whoever though up the year 1970 - couldn't they have gotten
* a leap-year instead? I also hate Gregorius, pope or no. I'm grumpy.
*/
#define MINUTE 60
#define HOUR (60*MINUTE)
#define DAY (24*HOUR)
#define YEAR (365*DAY) /*·ÇÈòÄêµÄÃëÊý*/
/* interestingly, we assume leap-years */
static int month[12] = {
0,
DAY*(31),
DAY*(31+29),
DAY*(31+29+31),
DAY*(31+29+31+30),
DAY*(31+29+31+30+31),
&n ......