LFYOS

Ŀ ¼

  1. LFYOS
    1. °²×°
    2. Êý¾Ý½á¹¹
      1. ÄÚºË
      2. ÄÚ´æ¹ÜÀíÆ÷
    3. ÄÚºËʵÏÖ
      1. ¾ÍÐ÷Ïß³Ì
        1. ¶ÑÊý¾Ý½á¹¹
        2. ¾ÍÐ÷Ï̹߳ÜÀí²¿¼þµÄÊý¾Ý½á¹¹¼°ÆäʵÏÖ
        3. ¾ÍÐ÷Ï̹߳ÜÀí²¿¼þÌṩµÄµ÷ÓÃ
      2. ÐźÅÁ¿
        1. ÐźÅÁ¿ºÍP¡¢V²Ù×÷
        2. ÄÚºËÖеÄÐźÅÁ¿
        3. ÐźÅÁ¿¹ÜÀíÊý¾Ý½á¹¹
        4. ÐźÅÁ¿¹ÜÀíµÄʵÏÖ
      3. Ïß³ÌÇ¨ÒÆ
      4. ÖжÏ
      5. ´¦Àí»ú
        1. ´¦Àí»ú¹ÜÀíÊý¾Ý½á¹¹
        2. ´¦Àí»ú¹ÜÀíµÄʵÏÖ
      6. ´æ´¢¹ÜÀí
        1. ´æ´¢¹ÜÀíÊý¾Ý½á¹¹
        2. Ò³¿ò״̬µÄ±äǨ
        3. Ò³¿òÉ¢ÁжÓÁÐ
        4. ´æ´¢¹ÜÀíµÄʵÏÖ
    4. ±à³ÌÊÖ²á
      1. LFYOSÖÐÓ¦ÓóÌÐò±à³ÌÄ£ÐÍ
        1. µ¥Ò»Êý¾Ý´æ´¢Ä£ÐÍ
        2. ʵÏÖÁËÊý¾Ý´æ´¢¡¢Êý¾Ý¼ÆËãºÍ×ÊÔ´¹ÜÀíµÄ·ÖÀë
        3. Ó¦ÓóÌÐòÖ®¼äµÄÒÀÀµ¹ØÏµ
      2. ÄÚºËÌṩµÄϵͳ¹¦Äܵ÷ÓÃ
        1. ²ÎÊý´«µÝ
        2. ϵͳ¹¦Äܵ÷ÓõÄÀý×Ó
      3. ÄÚºËÖÐϵͳ¹¦Äܵ÷Óõĸñʽ
        1. Ïß³ÌÇ¨ÒÆºÍÏ̷߳µ»Ø
        2. ¶ÔÐźÅÁ¿Ö´ÐÐP¡¢V²Ù×÷
        3. ÐźÅÁ¿¶¨Ê±
        4. ´´½¨Ïß³Ì
        5. ½ø³Ì×ÊÔ´
        6. ÉêÇëºÍÊÍ·ÅÐźÅÁ¿
        7. Ïß³ÌÊôÐÔ
        8. ²éѯ´æ´¢ÌåÈÝÁ¿ºÍµØÖ·
        9. ÉèÖÃÎļþ´°¿ÚcapabilityУÑé
      4. ÄÚ´æ¹ÜÀíÆ÷ÌṩµÄ¹¦Äܵ÷ÓÃ
        1. Îļþ´°¿Ú
        2. µØÖ·Ó³Éä
        3. flush
        4. ±êÖ¾Ò³¿ò
        5. ´æ´¢Óò
        6. ¼ÆËã´æ´¢¹ÜÀíÇøÐèÒªµÄ´æ´¢¿Õ¼ä
        7. ³õÊÔ»¯ºÍ°²×°
        8. ²Ù×ÝÎļþ´°¿Ú
      5. ÎļþϵͳÌṩµÄ¹¦Äܵ÷ÓÃ


LFYOS

[Ŀ¼]


°²×°

ͨ¹ýRedhat 7.1ʵʩ°²×°

    ÎÒÃǰ²×°µÄ¿ª·¢»·¾³ÊÇRedhat 7.1£¬Äں˰汾linux-2.4.2£¬ÏÂÃæÒԸð汾ΪÀýÀ´ÌÖÂÛLINUX²Ù×÷ϵͳ°²×°ºÍ¼ÓÔØÎÊÌâ¡£ÔÚRedhat 7.1Linux²Ù×÷ϵͳÖУ¬µ±Öع¹ÄÚºËʱ£¬Ê×ÏȽøÈëĿ¼/usr/src/ linux-2.4.2£¬Ö´ÐÐmakeÃüÁ¸ÃÃüÁî¸ù¾ÝÎļþ/usr/src/ linux-2.4.2.MakefileÖеĹæÔò£¬Ö´ÐйæÔòÖ¸¶¨µÄ¸÷¸öÃüÁÆäÖ´Ðйý³ÌÊÇÊ×ÏÈÉú³ÉÒ»¸öÄÚºËͼÏó£¬È»ºóÔٰѸÃÄÚºËͼÏóѹËõºó£¬°²×°µ½ÏµÍ³Ö®ÖС£Éú³ÉÄÚºËͼÏóµÄmake¹æÔòΪ£º

vmlinux: $(CONFIGURATION) init/main.o init/version.o linuxsubdirs
              $(LD) $(LINKFLAGS) $(HEAD) init/main.o init/version.o \
                     --start-group \
                     $(CORE_FILES) \
                     $(DRIVERS) \
                     $(NETWORKS) \
                     $(LIBS) \
                     --end-group \
                     -o vmlinux

    ÎÒÃÇʵÏÖÐéÄâµØÖ·¿Õ¼ä»ùÓÚÎļþ²Ù×÷ϵͳµÄ°²×°ºÍ¼ÓÔØµÄ·½·¨ÊÇ£ºÐ޸ĸùæÔò£¬Ê¹µÃ×ömakeÖØ¹¹ÄÚºËʱ£¬²»ÔÙ¸ù¾ÝÉú³ÉlinuxÄں˵ÄÄ¿±êÎļþÉú³ÉÄÚºËͼÏ󣬶øÊǸù¾ÝÉú³ÉÐéÄâµØÖ·¿Õ¼ä»ùÓÚÎļþ²Ù×÷ϵͳµÄÄ¿±êÎļþÉú³ÉÄÚºËͼÏó£¬Îª´Ë°ÑÉÏËß¹æÔòÐÞ¸ÄΪ£º

vmlinux  :      $(LFYOS)
              $(LD) $(LINKFLAGS)  $(LFYOS)  -o vmlinux

    ±äÁ¿$(LFYOS)Öдæ·ÅµÄÊÇÉú³ÉÐéÄâµØÖ·¿Õ¼ä»ùÓÚÎļþ²Ù×÷ϵͳÄÚºËÐèÒªµÄÄ¿±êÎļþ£¬ÕâÑùµ±ÎÒÃÇÖØÐÂ×ömakeÖØ¹¹ÄÚºËʱ£¬¾Í»á¸ù¾Ý±äÁ¿$(LFYOS)ÖÐÖ¸¶¨µÄÄ¿±êÎļþÉú³ÉÒ»¸öÄÚºËͼÏ󣬲¢°Ñ¸ÃÄÚºËͼÏó°²×°µ½ÏµÍ³Ö®ÖУ¬¶ø²»ÔÙ¸ù¾ÝÉú³ÉLinuxµÄÄÚºËÎļþÉú³ÉºÍ°²×°LINUXÄÚºËͼÏó¡£µ±ÖØÐÂÆô¶¯ÏµÍ³Ê±£¬¾Í»á°ÑÎÒÃÇʵÏÖµÄÄÚºËÆô¶¯ÆðÀ´£¬¶ø²»»áÆô¶¯Ò»¸öLINUXÄںˡ£

°²×°ºÍ¼ÓÔØµÄÏêϸ²½ÖèÈçÏ£º

    ·i.ÒÔ³¬¼¶Óû§root×¢²á¡£°²×°²Ù×÷ϵͳµÄÄں˵±È»±ØÐëÊdz¬¼¶Óû§root¡£

    ·ii.¼ì²éϵͳÊÇ·ñ°²×°ÁËÄں˿ª·¢µÄÈí¼þ°ü£¬ÊÇ·ñ°²×°ÁËlilo£¬Èç¹ûûÓа²×°°²×°Ö®£¬¹ØÓÚÈçºÎ°²×°Çë²Î¿¼°²×°LINUXµÄÏêϸ×ÊÁÏ£¬´Ë´¦ÂÔ¡£

    ·iii.ÖØ¹¹Ò»±élinuxÄںˣ¬¹ØÓÚÈçºÎÖØ¹¹linuxÄÚºËÇë²Î¿¼°²×°LINUXµÄÏêϸ×ÊÁÏ£¬´Ë´¦ÂÔ¡£

    ·iv. ½øÈëĿ¼/usr/src/linux-X.X.X£¨ÆäÖеÄX.X.XΪÄں˰汾ºÅ£©£¬¸´ÖÆÒ»¸öMakefile£¬Ò²¾ÍÊÇÖ´ÐÐÃüÁî:
          cp  Makefile  lfy_makefile

    ·v.±à¼­Îļþlfy_makefile£¬È·¶¨ÆäÖеĹæÔò£º

vmlinux: $(CONFIGURATION) init/main.o init/version.o linuxsubdirs
                            $(LD) $(LINKFLAGS) $(HEAD) init/main.o init/version.o \
                                          --start-group \
                                          $(CORE_FILES) \
                                          $(DRIVERS) \
                                          $(NETWORKS) \
                                          $(LIBS) \
                                          --end-group \
                                   -o vmlinux

°Ñ¸Ã¹æÔòÐÞ¸ÄΪ£º

vmlinux  :      $(LFYOS)
                            $(LD) $(LINKFLAGS)  $(LFYOS)  -o vmlinux

    ·vi.½øÈë/etcĿ¼£¬±à¼­liloµÄÅäÖÃÎļþ/etc/lilo.conf¡£¸ÃÎļþÖеÄÄÚÈÝÀàËÆÓÚ£º

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=180
message=/boot/message
linear
default=dos

image=/boot/vmlinuz-2.4.2-2
       label=linux
       read-only
       root=/dev/hda7

other=/dev/hda1
       optional
       label=dos

    ÔÚ¸ÃÎļþÖпªÊ¼²¿·ÖÊǰ²×°¸÷¸ö²Ù×÷ϵͳ×ܵÄÅäÖÃÐÅÏ¢£¬ºóÃæÊǸ÷¸ö²Ù×÷ϵͳµÄÅäÖÃÐÅÏ¢¡£Ð޸ĸÃÎļþΪ£º

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=180
message=/boot/message
linear
default=dos

image=/boot/vmlinuz-2.4.2-2
       label=linux
       read-only
       root=/dev/hda7

image=/boot/vmlinuz.new
label=lfyos
read-only
root=/dev/hda7

other=/dev/hda1
       optional
       label=dos

    Öм䲿·ÖΪ¼ÓÈëµÄÄÚÈÝ£¬Ò²¾ÍÊÇÐéÄâµØÖ·¿Õ¼ä»ùÓÚÎļþ²Ù×÷ϵͳµÄÆô¶¯ÐÅÏ¢£¬²Ù×÷ϵͳµÄÆô¶¯ÎļþΪ/boot/vmlinux.new£¬Ãû³ÆÎªlfyos£¬Ö»¶Á°²×°£¬°²×°É豸Ϊ/dev/hda7¡£²»Í¬µÄϵͳ°²×°É豸¿ÉÄܲ»Í¬£¬Ö»ÐèÒª°Ñ°²×°É豸ÉèÖóɺÍlinux²Ù×÷ϵͳÏàͬ°²×°É豸¼´¿É¡£

    ·vii.È·¶¨°²×°ÐéÄâµØÖ·¿Õ¼ä»ùÓÚÎļþ²Ù×÷ϵͳԴÎļþºÍÄ¿±êÎļþµÄĿ¼£¬½øÈë¸ÃĿ¼£¨ÔÚÎÒÃǵÄʵÏÖÖУ¬Ô´ÎļþºÍÄ¿±êÎļþ°²×°ÔÚĿ¼/rootϵÄosĿ¼ÖУ©£¬Òò´ËÀûÓÃÃüÁîcd /root½øÈëĿ¼/root£¬°ÑÐéÄâµØÖ·¿Õ¼ä»ùÓÚÎļþ²Ù×÷ϵͳԴÎļþµÄѹËõÎļþos.tar¿½±´µ½¸ÃĿ¼Ï¡£

    ·viii.Ö´ÐÐÃüÁîtar ¨Cxvf os.tar £¬°ÑÔ´ÎļþµÄѹËõÎļþ½âѹ£¬¸ÃÃüÁÔÚ/rootĿ¼ÏÂÉú³ÉÒ»¸ö×ÓĿ¼os£¬Éú³ÉÐéÄâµØÖ·¿Õ¼ä»ùÓÚÎļþ²Ù×÷ϵͳµÄÔ´Îļþ½«È«²¿½âѹµ½¸Ã×ÓĿ¼Ï¡£

    ·ix.½øÈë/root/osĿ¼£¬±à¼­¸ÃĿ¼ÏµÄmakefileÎļþ£¬ÔÚ¸ÃÎļþµÄµÚÒ»ÐÐΪ
           VERSION=linux-2.4.2
±äÁ¿VERSION Öдæ·ÅLINUXÄں˵İ汾ºÅ£¬Èç¹ûÄã°²×°µÄLINUXÄں˵İ汾²»ÊÇ2.4.2£¬ÐÞ¸ÄΪÏàÓ¦µÄ°æ±¾ºÅ¡£

    ·x.Ö´ÐÐÃüÁîmake¡£¸ÃÃüÁîÖ´ÐÐÍê±Ïºó£¬ÐéÄâµØÖ·¿Õ¼ä»ùÓÚÎļþ²Ù×÷ϵͳ¾ÍÒѾ­³É¹¦µÄ°²×°µ½ÄãµÄϵͳ¡£

    ·xi.ÖØÐÂÆô¶¯ÏµÍ³£¬Ñ¡ÔñÆô¶¯µÄ²Ù×÷ϵͳ£¬½«·¢ÏÖ¿ÉÒÔÑ¡ÔñµÄ²Ù×÷ϵͳÖаüÀ¨lfyos£¬Õâ¾ÍÊǰ²×°µÄÐéÄâµØÖ·¿Õ¼ä»ùÓÚÎļþ²Ù×÷ϵͳ¡£Ñ¡Ôñ²¢Æô¶¯¸Ã²Ù×÷ϵͳ£¬ÐéÄâµØÖ·¿Õ¼ä»ùÓÚÎļþ²Ù×÷ϵͳ¼´¿ªÊ¼ÔËÐС£

[Ŀ¼]


Êý¾Ý½á¹¹

[Ŀ¼]


ÄÚºË

1¡¢Îļþkernel/arch.h
#ifndef OS_KERNEL_ARCH
#define OS_KERNEL_ARCH

#define DEFAULT_CS                (0x23)
#define DEFAULT_DS                (0x2b)
#define DEFAULT_ES                DEFAULT_DS
#define DEFAULT_FS                DEFAULT_DS
#define DEFAULT_GS                DEFAULT_DS
#define DEFAULT_SS                DEFAULT_DS
#define DEFAULT_SP                (0xc0001ffc)
#define DEFAULT_SP_0        (0xc0000ffc)

typedef struct{
                void (*ip)(void );
                int cs;
                int flag;
                char *sp;
                int ss;
                int ds,es,fs,gs;
                char *sp_0;
                int (*function)(void );
                int cr2[CR2_BUF_NUMBER];
}run_point;

#endif

2¡¢Îļþkernel/capability.h
#ifndef OS_KERNEL_CAPABILITY
#define OS_KERNEL_CAPABILITY

struct capability {
        int c1,c2,c3,c4;
};

#endif

3¡¢Îļþkernel/process.h
#ifndef OS_PROCESS_STRUCT
#define OS_PROCESS_STRUCT

struct thread_physical_block {
                int stack_memory_id,stack_block_id;
                int memory_id,block_id;
};


struct network_address{
                int a;
};


struct file{
                struct{
                        struct network_address network_node;
                        int server_processor,server_process,file_handler;
                }file;
                struct{
                        int processor,process;
                }proxy;
                int memory_process,open_window_id;
                int window_base_1,window_base_2,window_length,right;
                struct capability capability;
                int read_in_flag,swap_out_flag;
};

union file_system_operation_parameter{
                struct {
                        int begin_rw,end_rw;
                }read_write;
};

struct file_system_call_parameter {
                int command,sleep_semaphore;
                struct file file;
                struct thread_physical_block block;
                union file_system_operation_parameter parameter;
};

#define OPEN_FILE                0
#define CLOSE_FILE                1
#define READ_FILE                2
#define WRITE_FILE                3
#define OPERATE_FILE                4

struct process{
                run_point start_point;
                int (*driver)(struct file_system_call_parameter *par);
                int priority;
                int semaphore;
                int enter_thread_number,id;
                int max_thread_number,thread_number,thread_ring;
                int max_semaphore_number,semaphore_number,semaphore_ring;
                struct user_file_information file[USER_FILE_NUMBER];
                struct capability capability;
};

#endif
4¡¢Îļþkernel/kernel_struct.h
#ifndef OS_KERNEL_STRUCT
#define OS_KERNEL_STRUCT

struct semaphore{
                int value;
                int process;
                int thread_id,thread_ring;
                int front,back;
                struct capability capability;

                int heap,v_value;
                struct kernel_time first,step;
};

struct thread ;
struct return_stack ;

struct thread_environment{
                int system_call,system_call_arg1;        /*ax,bx*/
                int system_call_arg2,system_call_arg3;        /*cx,dx*/
                int system_call_arg4,system_call_arg5;        /*si,di*/
                int system_call_arg6,system_call_arg7;        /*bp,r7*/
                run_point point;                        /*ip,cs,flag,sp,ss */
};

struct exception_item{
                int flag;
};

struct return_stack{
                struct thread_environment environment;
                int current_process,process_id,process_p_flag;
                struct exception_item exception;
                struct thread_physical_block physical_block;
};

struct thread{
                enum {SLEEP,RUN,READY} state;
                int priority;
                int set_v_operation_result_flag;
                int heap,process,pro_front,pro_back;
                int semaphore,sleep_semaphore,sem_front,sem_back;
                int cpu_id;
                struct return_stack return_stack[RETURN_BLOCK_NUMBER];
                int return_stack_top;
                struct user_file_information file[USER_FILE_NUMBER];
};

struct thread_heap{
                int thread;
};

#endif
5¡¢Îļþkernel/os_struct.h

#ifndef OS_OS_STRUCT
#define OS_OS_STRUCT

struct cpu_information{
                int thread_id;
                struct{
                        int thread_id,process_id;
                        struct thread_physical_block physical_block;
                }last;
};

struct os_data{
                struct{
                        struct cpu_information used_cpu[VIRTUAL_CPU_NUMBER];
                        struct{
                                int cpu_id;
                        }free_cpu[VIRTUAL_CPU_NUMBER];
                        int free_cpu_top;
                }virtual_cpu;

                struct process process[PROCESS_NUMBER];

                struct thread thread[THREAD_NUMBER];
                struct{
                        struct thread_heap run_heap[VIRTUAL_CPU_NUMBER];
                        struct thread_heap ready_heap[THREAD_NUMBER];
                        int run_thread_number,ready_thread_number;
                }thread_heap;
                struct semaphore semaphore[SEMAPHORE_NUMBER];
                struct{
                        int semaphore_id;
                }semaphore_heap[SEMAPHORE_NUMBER];
                struct kernel_time current_time;
                struct system_file_information system_file[MEMORY_BODY_NUMBER];
                struct capability system_capability;
};

struct current_information {
                struct thread_environment *env;
                struct return_stack *rt;
                struct thread *t;
                struct cpu_information *cpu_info;
                union system_call_parameter *par;
                int thread_id,cpu_id,return_stack_top;
};
extern struct current_information current;

#endif


[Ŀ¼]


ÄÚ´æ¹ÜÀíÆ÷

1¡¢Îļþmemory/memory_struct.h

#ifndef OS_MEMORY_STRUCT
#define OS_MEMORY_STRUCT

struct file_window{
                enum{
                        FILE_OPEN,
                        FILE_CLOSE
                } state;
                struct file file;
                int block_ring;
                int file_front,file_back;
                int lock_number;
};
struct memory_sleep_semaphore{
                int processor,semaphore;
};
struct physical_block{
                enum{
                        FREE_BLOCK,
                        READING_BLOCK,
                        NOT_MODIFIED_BLOCK,
                        MODIFIED_BLOCK,
                        WRITING_BLOCK
                }state;

                int lock_number;
                int file_window,logic_block_number;
                int physical_number;
                int file_front,file_back;
                int buf_front,buf_back;
                int hash_front,hash_back;
                struct memory_sleep_semaphore sleep_semaphore;
};

struct memory_resource{
                int process_number;
                int file_number,max_file_number;
                int max_block_number,trigger_block_number;
                int block_number,read_block_number,write_block_number;
                struct capability capability;
};

struct memory_process{
                int file_number,max_file_number,file_ring;
                int max_block_number,trigger_block_number;
                int block_number,read_block_number,write_block_number;
                int block_ring,read_block_ring,write_block_ring;
                struct capability capability;
};

struct memory_hash{
                int hash_ring;
};

struct memory_body_struct{
                int *free_physical_block,*free_file;
                int *block_number,*free_block_number;
                int *file_number,*process_number,*hash_number;
                struct physical_block *physical_block;
                struct file_window *file_window;
                struct memory_process *memory_process;
                struct memory_hash *hash;
                int (*hash_function)(int file,int logic_block);
                int my_processor,my_memory_body;
                struct memory_sleep_semaphore *wait_block;
};
struct install_memory_body_parameter{
                char *base;
                int (*hash_function)(int file,int logic_block);
                int my_processor,my_memory_body;
                int block_number,file_number;
                int process_number,hash_number;
                int first_block;
                struct capability capability;
};

#endif

2¡¢Îļþmemory/call_memory.h

#ifndef OS_MEMORY_MEMORY_CALL
#define OS_MEMORY_MEMORY_CALL

union memory_call_parameter{
                struct{
                        struct install_memory_body_parameter
                                memory_body_parameter;
                        struct capability capability;
                        int set_stack_flag;
                }setup;
                struct open_file_window{
                        int file_window_id;
                        struct file_window file_window;
                        struct capability process_capability;
                }open_file_window;
                struct close_file_window{
                        int file_window_id;
                        struct capability file_capability;
                }close_file_window;
                struct file_attribute{
                        int file_window_id;
                        struct file file;
                        struct capability capability;
                }file_attribute;
                struct memory_map_deal{
                        int file_window_id;
                        int begin_logic_address,end_logic_address;
                        struct capability file_capability;
                }memory_map_deal;
                struct flush_process_memory{
                        int give_up_flag;
                        int process_number;
                        struct capability process_capability;
                }flush_process_memory;
                struct flush_file_window{
                        int give_up_flag;
                        int file_window_id;
                        struct capability file_capability;
                }flush_file_window;
                struct mark_modify{
                        int file_window_id;
                        int begin_logic_address,end_logic_address;
                        struct capability file_capability;
                }mark_modifed;
                struct memory_resource        memory_resource;
                struct control_file_system{
                        union file_system_operation_parameter parameter;
                        struct capability capability;
                }control_file_system;
};

#endif


[Ŀ¼]


ÄÚºËʵÏÖ

[Ŀ¼]


¾ÍÐ÷Ïß³Ì

ÄÚºËÖоÍÐ÷Ï̹߳ÜÀí²¿¼þµÄʵÏÖ

    ÔÚÐéÄâµØÖ·¿Õ¼ä»ùÓÚÎļþ²Ù×÷ϵͳÖУ¬²ÉÓð´ÓÅÏȼ¶µ÷¶È·½Ê½£¬µ÷¶È¸÷¸ö¾ÍÐ÷Ïß³ÌÕ¼Óô¦Àí»ú¡£Ö´ÐÐÏ̵߳÷¶Èʱ£¬×ÜÊÇÑ¡ÔñÓÅÏÈÊý×îС£¬Ò²¾ÍÊÇÓÅÏȼ¶×î¸ßµÄÏß³ÌÕ¼Óô¦Àí»ú¡£ÄÚºËÀûÓöÑÊý¾Ý½á¹¹Ñ¡ÔñÓÅÏÈÊý×îСµÄÏ̡߳£ÏÂÃæÊ×ÏȽéÉܶÑÊý¾Ý½á¹¹£¬È»ºóÌÖÂÛÑ¡ÔñÓÅÏÈÊý×îСÏ̵߳ÄËã·¨¡£

[Ŀ¼]


¶ÑÊý¾Ý½á¹¹

¶ÑµÄ¸ÅÄî

    ¼ÙÉèr[0]£¬r[1]£¬¡­ r[n-1]ÊÇÒ»ÐòÁÐÔªËØ£¬Èç¹û¶ÔÓÚÈÎÒâr[i]£¬Í¬Ê±Âú×ãÌõ¼þr[i].key¡Ür[2* i+1].key£¬r[i].key¡Ür[2*i+2].key£¬Ôò³Æ¸ÃÐòÁÐÊÇÒ»¸ö¶Ñ£¬Ò²³ÆÎª×îС»¯¶Ñ£¬Èç¹û°Ñ²»µÈʽÖеÄСÓںšܻ»³É´óÓںšݣ¬³ÆÎª×î´ó»¯¶Ñ¡£ÔÚÏÂÃæµÄÌÖÂÛÖУ¬ËùÓеĶÑÖ¸µÄÊÇ×îС»¯¶Ñ¡£
¿ÉÒÔ°ÑÐòÁÐr[0]£¬r[1]£¬¡­ r[n-1]¿´³ÉÊǰ´Êý×鷽ʽ´æ´¢µÄÒ»¿ÃÂú¶þ²æÊ÷£¬ÔªËØr[0]ΪÊ÷¸ù£¬ÆäËüÔªËØÎªÊ÷ÖеÄÖмä½áµã»òÒ¶×Ó½áµã¡£¿¼Âǵ½ÔÚÒ»¿Ã°´Êý×鷽ʽ´æ´¢µÄÂú¶þ²æÊ÷ÖУ¬ÔªËØr[2*i+1]ºÍÔªËØr[2*i+2]ÊÇÔªËØr[i]µÄ×óº¢×ÓºÍÓÒº¢×Ó£¬Òò´ËÔÚÒ»¸ö¶ÑÖУ¬¶ÔÓÚÈÎÒ»ÔªËØr[i]£¬Æä¼üÖµr[i].keyÒ»¶¨Ð¡ÓÚµÈÓÚÆä×óÓÒÁ½¸öº¢×ӵļüÖµr[2* i+1].keyºÍr[2*i+2].key¡£
    ¸ù¾Ý¶ÑµÄ¶¨Ò壬¿ÉÒԵóö¶ÑµÄÒ»¸öÖØÒªÐÔÖÊ£ºÈç¹ûÒ»¸ö°´Êý×é´æ·ÅµÄÂú¶þ²æÊ÷ÊǶѣ¬ÄÇô¶Ñ¶¥ÔªËØÒ»¶¨ÊǶÑÖÐËùÓÐÔªËØÖмüÖµ×îСµÄÔªËØ¡£
    ¸ÃÐÔÖÊ¿ÉÒÔ¸ù¾Ý¶Ñ¶þ²æÊ÷µÄ²ãÊýÀûÓÃÊýѧ¹éÄÉ·¨Ö¤Ã÷£º
    µ±¶Ñ¶þ²æÊ÷µÄ²ãÊýΪ1ʱ£¬¶Ñ¶þ²æÊ÷ÖÐÖ»ÓÐÒ»¸öÔªËØr[0]£¬Òò´Ë¶Ñ¶¥ÔªËØÊǶÑÖÐËùÓÐÔªËØÖмüÖµ×îСµÄÔªËØ¡£
    ¼ÙÉè¶ÔÓÚËùÓеIJãÊýСÓÚnµÄ¶Ñ¶þ²æÊ÷£¬¶Ñ¶¥ÔªËصļüÖµÊǶÑÖÐËùÓÐÔªËØÖмüÖµ×îСµÄÔªËØ¡£µ±¶Ñ¶þ²æÊ÷µÄ²ãÊ÷Ϊnʱ£¬¶Ñ¶¥ÔªËØr[0]µÄ×óÓÒ×ÓÊ÷Ò»¶¨ÊDzãÊýСÓÚnµÄ¶Ñ¶þ²æÊ÷£¬×ó×ÓÊ÷µÄ¶Ñ¶¥ÔªËØÊÇr[1]£¬ÓÒ×ÓÊ÷µÄ¶Ñ¶¥ÔªËØÊÇr[2]¡£¸ù¾Ý¼ÙÉè¿ÉÖªr[1]ÊÇ×ó×ÓÊ÷ÖмüÖµ×îСµÄÔªËØ£¬r[2]ÊÇÓÒ×ÓÊ÷ÖмüÖµ×îСµÄÔªËØ£»ÔÙ¸ù¾Ý¶ÑµÄ¶¨Ò壺¶ÔÓÚÈÎÒâÔªËØr[i]Âú×ãr[i].key¡Ür[2* i+1].key£¬r[i].key¡Ür[2*i+2].key£¬¿ÉÖªr[0].key¡Ür[1].key£¬r[0].key¡Ür[2].key£¬Òò´Ë£¬¶Ñ¶¥ÔªËØr[0]Ò»¶¨ÊǶÑÖÐËùÓÐÔªËØÖмüÖµ×îСµÄÔªËØ¡£
    ¶ÑµÄÐÔÖÊʹµÃ¶ÑºÜÊʺϴÓÒ»×éÔªËØÖÐÑ¡Ôñ×îÖµÔªËØ£¨×î´óÖµ»ò×îСֵ£©µÄ³¡ºÏ£¬Ö»Òª°ÑËùÓпɹ©Ñ¡ÔñµÄÔªËØ×éÖ¯³ÉÒ»¸ö¶Ñ£¬¶Ñ¶¥ÔªËؼ´ÎªÐèҪѡÔñµÄ×îÖµÔªËØ¡£ÕâÒ²ÊÇÎÒÃDzÉÓöÑÊý¾Ý½á¹¹Ñ¡ÔñÓÅÏÈÊý×îСÏ̵߳ÄÔ­Òò¡£ÔÚLFYOSÖУ¬°ÑËùÓд¦ÓÚ¾ÍÐ÷״̬µÄÏ̸߳ù¾ÝÏ̵߳ÄÓÅÏÈÊý×éÖ¯³ÉÒ»¸ö¶Ñ£¬¶Ñ¶¥ÔªËؼ´ÎªÓÅÏȼ¶×î¸ßµÄỊ̈߳¬Ö´ÐÐÏß³ÌÇл»Ê±£¬ÄÚºË×ÜÊÇÑ¡Ôñ´¦ÓڶѶ¥µÄÏß³ÌÕ¼Óô¦Àí»ú¡£
    ÔªËØµÄ½¡Öµ·¢Éú±ä»¯Ê±¶Ô¶ÑµÄµ÷Õû
    ¼ÙÉèÔÚ¶ÑÖдæÔÚn¸öÔªËØr[0]£¬r[1]£¬¡­ r[n-1]£¬ÕâÐ©ÔªËØÖ®¼äÈ«²¿Âú×ãÌõ¼þr[i].key¡Ür[2* i+1].keyºÍr[i].key¡Ür[2*i+2].key£¬ÓÉÓÚijÖÖÔ­Òò£¬ÆäÖÐij¸öÔªËØr[k]µÄ¼üÖµr[k].key¸Ä±ä£¬ÆÆ»µÁ˹¹³É¶ÑµÄÌõ¼þ£¬ÐèÒª¶ÔÔªËØÐòÁнøÐÐÏàÓ¦µÄµ÷Õû£¬°ÑÔªËØÐòÁлָ´ÎªÒ»¸ö¶Ñ¡£
    ÔªËØr[k]µÄ¼üÖµr[k].key¸Ä±äÓÐÁ½ÖÖ¿ÉÄÜ£º¼üÖµr[k].key¼õС»ò¼üÖµr[k].keyÔö´ó¡£ÔÚ¶ÑÖУ¬ÔªËØr[k]µÄ¼üÖµr[k].key´óÓÚµÈÓÚÆäË«Ç׵ļüÖµr[INT((k-1£©/2)].key£¬Ð¡ÓÚµÈÓÚ×óÓÒº¢×ӵļüÖµr[2* i+1].keyºÍr[2*i+2].key£¬Èç¹û¼üÖµr[k].key¼õС£¬Æä¼üÖµÈÔȻСÓÚµÈÓÚ×óÓÒº¢×ӵļüÖµ£¬µ«¿ÉÄÜÓÉÓÚСÓÚÆäË«Ç׵ļüÖµ¶øÆÆ»µÁ˹¹³É¶ÑµÄÌõ¼þ¡£Í¨¹ýÔÚÐòÁÐÖаÑr[k]ºÍÆäË«Ç×½áµãÏ໥½»»»£¬ÔÚ¶þ²æÊ÷ÖаÑr[k]ÏòÉÏÒÆ¶¯£¬¼´¿É°ÑÐòÁе÷ÕûΪһ¸ö¶Ñ¡£
    ÏÂÃæÌÖÂÛÈç¹ûij¸öÔªËØr[k]Æä¼üÖµr[k].keyÔö´óºó£¬ÈçºÎ¶Ô¶Ñ½øÐе÷Õû¡£
    ¼ÙÉèÔÚ¶ÑÖУ¬ÔªËØr[k]µÄ¼üÖµr[k].key´óÓÚµÈÓÚÆäË«Ç׵ļüÖµr[INT((k-1£©/2)].key£¬Ð¡ÓÚµÈÓÚ×óÓÒº¢×ӵļüÖµr[2* i+1].keyºÍr[2*i+2].key£¬Èç¹û¼üÖµr[k].keyÔö´ó£¬Æä¼üÖµÈÔÈ»´óÓÚÆäË«Ç×½ÓµãµÄ¼üÖµ£¬µ«¿ÉÄÜÓÉÓÚ´óÓÚÆä×óÓÒº¢×ӵļüÖµ¶øÆÆ»µÁ˹¹³É¶ÑµÄÌõ¼þ¡£Í¨¹ýÔÚÐòÁÐÖаÑr[k]ºÍ×óÓÒº¢×Ó½áµãÖмüÖµ½ÏСµÄ½áµãÏ໥½»»»£¬ÔÚ¶þ²æÊ÷ÖаÑr[k]ÏòÏÂÒÆ¶¯£¬¼´¿É°ÑÐòÁе÷ÕûΪһ¸ö¶Ñ¡£

¶Ñµ÷ÕûËã·¨µÄʱ¼ä¸´ÔÓ¶È

    ÎÞÂÛij¸ö¶ÑÖÐÔªËØµÄ¼üÖµÊÇÔö´ó»¹ÊǼõС£¬¶Ñµ÷ÕûËã·¨Ö´Ðнáµã½»»»µÄ´ÎÊý¶¼ÊǺÜÉٵġ£¼ÙÉèÔÚÒ»¸ö¶ÑÖдæÔÚn¸öÔªËØ£¬Ôò¶Ñ¶þ²æÊ÷µÄ²ãÊý²»³¬¹ý1+Log 2n£¬µ±¶ÑÖÐÄ³Ò»ÔªËØµÄ¼üÖµÔö´óʱ£¬¸ÃÔªËØÔÚ¶ÑÖÐÏòÏÂÒÆ¶¯£»µ±¶ÑÖÐÄ³Ò»ÔªËØµÄ¼üÖµ¼õСʱ£¬¸ÃÔªËØÔÚ¶ÑÖÐÏòÉÏÒÆ¶¯¡£ÓÉÓڶѶþ²æÊ÷µÄ²ãÊý²»³¬¹ý1+Log2n£¬Òò´Ë£¬Ö´Ðжѵ÷ÕûË㷨ʱ£¬½áµã½»»»µÄ´ÎÊý²»³¬¹ýLog2n£¬Ò²¾ÍÊÇ˵£¬¶Ñµ÷ÕûËã·¨µÄʱ¼ä¸´ÔӶȽö½öΪO£¨Log2n£©¡£ÏÔÈ»£¬¶Ñµ÷ÕûËã·¨µÄʱ¼ä¸´ÔӶȺܵͣ¬ÕâÒ²ÊÇÎÒÃÇÑ¡Ôñ¶ÑÊý¾Ý½á¹¹À´Ñ¡ÔñÓÅÏȼ¶×î¸ßÏ̵߳ÄÔ­Òò¡£

Ïò¶ÑÖмÓÈëÒ»¸öÔªËØ£¬´Ó¶ÑÖÐɾ³ýÒ»¸öÔªËØ

    Ïò¶ÑÖмÓÈëÒ»¸öÔªËØÊ±£¬°ÑÔªËØ·ÅÔÚÐòÁеÄ×îºó£¬È»ºóÖ´ÐмüÖµ¼õСµÄÉÏÒÆµ÷Õû£»´Ó¶ÑÖÐɾ³ýÒ»¸öÔªËØÊ±£¬Ê×ÏȰѱ»É¾³ýµÄÔªËØºÍ×îºóÒ»¸öÔªËØ½»»»£¬°ÑÔªËØ´ÓÐòÁеÄ×îºóɾ³ý£¬ÔÙ¸ù¾Ýɾ³ýÔªËØµÄ¼üÖµºÍ½»»»ÔªËصļüÖµ´óСִÐÐÉÏÒÆ»òÏÂÒÆµ÷Õû¡£Èç¹ûɾ³ýÔªËØµÄ¼üֵСÓÚ½»»»ÔªËصļüÖµ£¬Ö´ÐÐÏÂÒÆµ÷Õû£»Èç¹ûɾ³ýÔªËØµÄ¼üÖµ´óÓÚ½»»»ÔªËصļüÖµ£¬Ö´ÐÐÉÏÒÆµ÷Õû¡£


[Ŀ¼]


¾ÍÐ÷Ï̹߳ÜÀí²¿¼þµÄÊý¾Ý½á¹¹¼°ÆäʵÏÖ

¿ÕÏд¦Àí»úÕ»¡¢´¦Àí»ú״̬Êý×é

    ÔÚϵͳÖÐÉèÖÃÒ»¿ÕÏд¦Àí»úÕ»£¬ËùÓпÕÏеĴ¦Àí»ú¼Ç¼ÔÚ¿ÕÏд¦Àí»úÕ»ÖУ¬µ±Ä³Ò»´¦Àí»ú¿ÕÏÐʱ£¬°Ñ´¦Àí»úºÅѹÈëÕ»ÖУ¬Èç¹ûÓÐÏß³ÌÐèÒªÔËÐУ¬´ÓÕ»Öе¯³öÒ»¸ö´¦Àí»ú·ÖÅ䏸Ïß³ÌʹÓᣵ±¾ÍÐ÷Ï̶߳ѷǿÕʱ£¬ËùÓд¦Àí»ú¶¼ÒÑ·ÖÅ䏸ÁËỊ̈߳¬¿ÕÏд¦Àí»úÕ»Ò»¶¨Êǿյġ£
ÔÚϵͳÖÐÉèÖÃÒ»´¦Àí»ú״̬Êý×飬ÿ¸ö´¦Àí»ú¶ÔÓ¦Êý×éÖеÄÒ»¸öÔªËØ¡£ÔÚÊý×éÖмǼן÷¸ö´¦Àí»úÐèÒªÇл»µÄỊ̈߳¬ÔÚ´ó¶àÊýÇé¿öÏ£¬µ±Ç°ÔËÐеÄÏ̺߳ÍÐèÒªÇл»µÄÏ̶߳þÕßÏàͬ£¬±íʾ²»ÐèÒªÖ´Ðд¦Àí»úÇл»£¬Èç¹û¶þÕß²»Í¬£¬ÐèÒªÉêÇë´¦Àí»úÖжϣ¬ÇëÇó´¦Àí»úÖ´Ðд¦Àí»úÇл»£¬Çл»ÁíÒ»Ïß³ÌÕ¼Óô¦Àí»ú¡£
ÔËÐÐÏ̶߳Ѻ;ÍÐ÷Ï̶߳Ñ
    ÔÚÐéÄâµØÖ·»ùÓÚÎļþµÄ²Ù×÷ϵͳÖУ¬ÉèÖÃÁËÁ½¸ö¶ÑÊý¾Ý½á¹¹£ºÔËÐÐÏ̶߳Ѻ;ÍÐ÷Ï̶߳ѡ£ËùÓÐÕýÔÚ´¦Àí»úÉÏÔËÐеÄÏ̼߳ǼÔÚÔËÐÐÏ̶߳ÑÖУ»ËùÓеȴýµ½´¦Àí»úÉÏÈ¥ÔËÐеÄÏ̼߳ǼÔÚ¾ÍÐ÷Ï̶߳ÑÖС£ÔËÐÐÏ̶߳ÑÖÐÏ̵߳ĸöÊý×î¶à²»³¬¹ýϵͳ֧³ÖµÄ´¦Àí»úÊý¡£
ϵͳ°´ÕÕ¸÷¸öÏ̵߳ÄÓÅÏÈÊý¶ÔÁ½¸ö¶Ñʵʩ¹ÜÀí¡£ÔÚ¾ÍÐ÷Ï̶߳ÑÖУ¬¶Ñ¶¥ÔªËØÊÇÓÅÏÈÊý×îСÓÅÏȼ¶×î¸ßµÄỊ̈߳¬Èç¹ûÐèҪѡÔñÒ»¸ö¾ÍÐ÷Ïß³ÌÕ¼Óô¦Àí»ú£¬Ñ¡Ôñ¶Ñ¶¥ÔªËضÔÓ¦µÄỊ̈߳»ÔÚÔËÐÐÏ̶߳ÑÖУ¬¶Ñ¶¥ÔªËØÊÇÓÅÏÈÊý×î´óÓÅÏȼ¶×îµÍµÄỊ̈߳¬Èç¹ûÐèҪѡÔñÒ»¸öÔËÐÐÏß³Ì·ÅÆú´¦Àí»ú£¬Ò²Ñ¡Ôñ¶Ñ¶¥ÔªËضÔÓ¦µÄÏ̡߳£ÓÉÓÚÏß³ÌÓÅÏÈÊýԽС£¬ÓÅÏȼ«Ô½¸ß£¬ÓÅÏÈÊýÔ½´ó£¬ÓÅÏȼ«Ô½µÍ£¬Òò´Ë£¬ÔËÐÐÏ̶߳ÑÊÇÒ»¸ö×î´ó»¯¶Ñ¡£
    ÓÉÓÚϵͳѡÔñÓÅÏȼ¶×î¸ßµÄÏß³ÌÕ¼Óô¦Àí»úÔËÐУ¬Ò»°ãÇé¿öÏ£¬¾ÍÐ÷Ï̶߳ѶѶ¥ÔªËضÔÓ¦Ï̵߳ÄÓÅÏÈÊý´óÓÚÔËÐÐÏ̶߳ѶѶ¥ÔªËضÔÓ¦Ï̵߳ÄÓÅÏÈÊý¡£Èç¹ûÓÉÓÚijЩԭÒòÏ̵߳ÄÓÅÏÈÊý·¢ÉúÁ˱仯£¨ÀýÈ磬Ï̸߳ıäÁËÓÅÏÈÊý¡¢´¦ÓÚÔËÐÐÏ̶߳ÑÖÐÏß³Ì˯Ãß¡¢Ïß³ÌÖÕÖ¹Í˳öµÈ£©£¬¾ÍÐ÷Ï̶߳ѶѶ¥ÔªËضÔÓ¦Ï̵߳ÄÓÅÏÈÊý£¬¿ÉÄÜСÓÚÔËÐÐÏ̶߳ѶѶ¥ÔªËضÔÓ¦Ï̵߳ÄÓÅÏÈÊý£¬±íʾϵͳÖÐij¸ö´¦ÓÚ¾ÍÐ÷̬Ï̵߳ÄÓÅÏȼ¶¸ßÓÚÁíÒ»¸ö´¦ÓÚÔËÐÐ̬Ï̵߳ÄÓÅÏȼ¶£¬ÐèҪϵͳִÐд¦Àí»úÇл»£¬Ê¹ÔËÐÐÏ̶߳ѶѶ¥ÔªËضÔÓ¦Ïß³Ì·ÅÆú´¦Àí»ú£¬¾ÍÐ÷Ï̶߳ѶѶ¥ÔªËضÔÓ¦Ïß³ÌÕ¼Óô¦Àí»ú¡£

ÏòÔËÐÐÏ̶߳ѻò¾ÍÐ÷Ï̶߳ѲåÈëÏ̵߳ÄËã·¨

    Èç¹û´æÔÚ¿ÕÏд¦Àí»ú£¬´Ó¿ÕÏд¦Àí»úÕ»µ¯³öÒ»¸ö´¦Àí»úºÅ·ÖÅ䏸Ị̈߳¬°Ñ·ÖÅäµÄ´¦Àí»úºÅ¼Ç¼ÔÚÏ̵߳ĿØÖÆ¿éÖУ¬ÔÚ´¦Àí»ú״̬Êý×éÖмǼ¸Ã´¦Àí»úÐèÒªÇл»µÄỊ̈߳¬Ö±½Ó°ÑÏ̼߳ÓÈëµ½ÔËÐÐÏ̶߳ÑÖУ¬²¢ÇëÇó´¦Àí»úÖ´Ðд¦Àí»úÇл»¡£
Èç¹û²»´æÔÚ¿ÕÏд¦Àí»ú£¬±È½ÏÐèÒª²åÈëµÄÏß³ÌÓÅÏȼ¶ºÍÔËÐÐÏ̶߳ѶѶ¥ÔªËضÔÓ¦µÄÏ̵߳ÄÓÅÏȼ¶£¬Èç¹ûÐèÒª²åÈëÏ̵߳ÄÓÅÏȼ¶²»¸ßÓÚÔËÐÐÏ̶߳ѶѶ¥ÔªËضÔÓ¦Ï̵߳ÄÓÅÏȼ¶£¬Ö±½Ó°Ñд´½¨µÄÏ̼߳ÓÈëµ½¾ÍÐ÷Ï̶߳ÑÖС£
    Èç¹ûÐèÒª²åÈëÏ̵߳ÄÓÅÏȼ¶¸ßÓÚÔËÐÐÏ̶߳ѶѶ¥ÔªËضÔÓ¦Ï̵߳ÄÓÅÏȼ¶£¬°ÑÐèÒª²åÈëµÄÏ̺߳ÍÔËÐÐÏ̶߳ѶѶ¥ÔªËØÏ໥½»»»£¬¶ÔÔËÐÐÏ̶߳ÑÖ´ÐÐÏÂÒÆµ÷Õû£¬°ÑÔ­ÔËÐÐÏ̶߳ѶѶ¥ÔªËضÔÓ¦µÄÏ̼߳ÓÈëµ½¾ÍÐ÷Ï̶߳ÑÖУ»Í¬Ê±£¬ÔÚ´¦Àí»ú״̬Êý×éÖжÔÓ¦´¦Àí»úÔªËØÖУ¬°ÑÐèÒªÇл»Ïß³ÌÓòÉèÖÃΪвåÈëÏ̵߳ÄÏ̱߳êʶ·û£¬ÇëÇó´¦Àí»úÖ´Ðд¦Àí»úÇл»¡£

´ÓÔËÐÐÏ̶߳ѻò¾ÍÐ÷Ï̶߳Ñɾ³ýÏ̵߳ÄËã·¨

    Èç¹ûÏ̴߳¦ÓÚ¾ÍÐ÷Ï̶߳ÑÖУ¬Ö±½Ó´Ó¾ÍÐ÷Ï̶߳ÑÖÐɾ³ý¡£
    Èç¹ûÏ̴߳¦ÓÚÔËÐÐÏ̶߳ÑÖУ¬¾ÍÐ÷Ï̶߳ѷǿգ¬°Ñɾ³ýµÄÏ̺߳;ÍÐ÷Ï̶߳ѶѶ¥ÔªËضÔÓ¦µÄÏß³ÌÖ´Ðн»»»£¬¶ÔÔËÐÐÏ̶߳ÑÖ´ÐÐÏÂÒÆµ÷Õû£¬ÔÙ´Ó¾ÍÐ÷Ï̶߳ÑÖаÑÏß³Ìɾ³ý£»Í¬Ê±£¬ÔÚ´¦Àí»ú״̬Êý×é¶ÔÓ¦´¦Àí»úµÄÔªËØÖУ¬°ÑÐèÒªÇл»Ïß³ÌÓòÉèÖÃΪԭ¾ÍÐ÷Ï̶߳ѶѶ¥ÔªËضÔÓ¦µÄỊ̈߳¬²¢ÇëÇó´¦Àí»úÖ´Ðд¦Àí»úÇл»¡£
    Èç¹ûÏ̴߳¦ÓÚÔËÐÐÏ̶߳ÑÖУ¬¾ÍÐ÷Ï̶߳ÑΪ¿Õ£¬Ö±½Ó´ÓÔËÐÐÏ̶߳ÑÖÐɾ³ý£»Í¬Ê±£¬ÔÚ´¦Àí»ú״̬Êý×é¶ÔÓ¦´¦Àí»úÔªËØÖУ¬°ÑÐèÒªÇл»Ïß³ÌÓòÉèÖÃΪ¿Õ¡£°Ñ´¦Àí»úºÅѹÈë¿ÕÏд¦Àí»úÕ»ÖУ¬²¢ÇëÇó´¦Àí»úÖ´Ðд¦Àí»úÇл»£¬´¦Àí»úÇл»Îª¿ÕÏÐ״̬¡£


[Ŀ¼]


¾ÍÐ÷Ï̹߳ÜÀí²¿¼þÌṩµÄµ÷ÓÃ

    ¹ÜÀíÔËÐÐÏ̶߳Ѻ;ÍÐ÷Ï̶߳ѵÄÄ£¿éͳ³ÆÎª¾ÍÐ÷Ï̹߳ÜÀí²¿¼þ£¬¾ÍÐ÷Ï̹߳ÜÀí²¿¼þΪÉϲ㹲ÌṩÁËËĸöµ÷Óãº

    ÏòÔËÐÐÏ̶߳ѻò¾ÍÐ÷Ï̶߳ÑÖвåÈëỊ̈߳ºÏ̶߳ÔÐźÅÁ¿Ö´ÐÐV²Ù×÷ʱ£¬¿ÉÄÜÐèÒª»½ÐÑỊ̈߳¬µ÷Óñ¾¹¦ÄÜÏòÔËÐÐÏ̶߳ѻò¾ÍÐ÷Ï̶߳ѲåÈëÏ̡߳£
    ´ÓÔËÐÐÏ̶߳ѻò¾ÍÐ÷Ï̶߳Ñɾ³ýỊ̈߳ºÏ̶߳ÔÐźÅÁ¿Ö´ÐÐP²Ù×÷ʱ£¬¿ÉÄÜÐèҪʹÏß³Ì˯Ãߣ¬µ÷Óñ¾¹¦ÄÜ´ÓÔËÐÐÏ̶߳ѻò¾ÍÐ÷Ï̶߳Ñɾ³ýÏ̡߳£
    Ïß³ÌÓÅÏÈÊýµ÷Õû£º¸Ä±äÏß³ÌÓÅÏÈÊýʱµ÷Óñ¾¹¦ÄÜ£¬Ê×ÏÈ´ÓÔËÐÐÏ̶߳ѻò¾ÍÐ÷Ï̶߳Ñɾ³ýỊ̈߳¬ÐÞ¸ÄÏß³ÌÓÅÏÈÊýºóÔÙ²åÈëµ½ÔËÐÐÏ̶߳ѻò¾ÍÐ÷Ï̶߳ÑÖС£
    ´¦Àí»úÇл»ÏìÓ¦£º´¦Àí»ú¹ÜÀí²¿¼þ½ö½öÑ¡ÔñÄÄЩÏß³ÌÓ¦¸ÃÔÚ´¦Àí»úÉÏÔËÐУ¬Èç¹ûÐèҪij¸ö´¦Àí»úÖ´Ðд¦Àí»úÇл»£¬Í¨¹ýÖжÏÍøÂçÏò´¦Àí»úÉêÇëÖжϣ¬´¦Àí»úÏìÓ¦Öжϣ¬´¥·¢ÖжϷþÎñ³ÌÐòÖ´Ðд¦Àí»úÇл»µÄ²Ù×÷£¬²¢µ÷Óñ¾¹¦ÄÜ֪ͨ´¦Àí»ú¹ÜÀí²¿¼þÒÑÍê³É´¦Àí»úÇл»¡£

[Ŀ¼]


ÐźÅÁ¿

ÄÚºËÖÐÐźÅÁ¿¹ÜÀí²¿¼þµÄʵÏÖ

    ÐźÅÁ¿£¨semaphore£©ÊÇE. W. DijkstraÔÚ1965ÄêÌá³öµÄÒ»ÖÖÓÃÓÚʵÏÖ½ø³ÌÖ®¼äͬ²½ºÍ»¥³âµÄ·½·¨¡£Ò»¸öÐźÅÁ¿µÄÖµ¿ÉÒÔΪ0£¬±íʾûÓлýÀÛÏÂÀ´µÄ»½ÐѲÙ×÷£¬Ò²Ã»ÓÐÔÚÐźÅÁ¿ÉÏ˯ÃߵĽø³Ì£»»òÕßΪÕýÖµ£¬±íʾÓÐÒ»¸ö»ò¶à¸ö±»»ýÀÛÏÂÀ´µÄ»½ÐѲÙ×÷£»»òÕßΪ¸ºÖµ£¬Æä¾ø¶ÔֵΪÔÚÐźÅÁ¿ÉÏ˯ÃߵĽø³ÌÊý¡£
    ÐźÅÁ¿¹ÜÀí²¿¼þÌṩËĸö¹¦Äܵ÷Óãº
    ·ÉêÇëÒ»¸öÐźÅÁ¿
    ·ÊÍ·ÅÒ»¸öÐźÅÁ¿
    ·¶ÔÐźÅÁ¿Ö´ÐÐP²Ù×÷
    ·¶ÔÐźÅÁ¿Ö´ÐÐV²Ù×÷

[Ŀ¼]


ÐźÅÁ¿ºÍP¡¢V²Ù×÷

    ¶ÔÐźÅÁ¿´æÔÚÁ½ÖÖ²Ù×÷£º¶ÔÐźÅÁ¿µÄP²Ù×÷ºÍ¶ÔÐźÅÁ¿µÄV²Ù×÷¡£
    ¶ÔÒ»ÐźÅÁ¿Ö´ÐÐP²Ù×÷ʱ¼ì²éÆäÖµÊÇ·ñ´óÓÚÁã¡£ÈôÊÇÔò½«ÆäÖµ¼õ1£¨ÓõôÒ»¸ö±£´æµÄ»½ÐÑÐźţ©²¢¼ÌÐøÖ´ÐУ»ÈôֵСÓÚµÈÓÚÁãÔò½«ÆäÖµ¼õ1ºó˯Ãߣ¬´ËʱP²Ù×÷²¢Î´½áÊø¡£¼ì²éÊýÖµ¡¢¸Ä±äÊýÖµ¡¢ÒÔ¼°¿ÉÄÜ·¢ÉúµÄ˯Ãß²Ù×÷¾ù×÷Ϊһ¸öµ¥Ò»µÄ¡¢²»¿É·Ö¸îµÄÔ­×Ó²Ù×÷(atomic action)Íê³É£¬¼´±£Ö¤Ò»µ©Ò»¸öÐźÅÁ¿²Ù×÷¿ªÊ¼£¬ÔòÔÚ²Ù×÷Íê³É»ò×èÈû֮ǰ±ðµÄ½ø³Ì¾ù²»ÔÊÐí·ÃÎʸÃÐźÅÁ¿¡£ÕâÖÖÔ­×ÓÐÔ¶ÔÓÚ½â¾öͬ²½ÎÊÌâºÍ±ÜÃ⾺ÕùÌõ¼þÊǷdz£ÖØÒªµÄ¡£
    V²Ù×÷µÝÔöÐźÅÁ¿µÄÖµ¡£Èç¹ûÒ»¸ö»ò¶à¸ö½ø³ÌÔÚ¸ÃÐźÅÁ¿ÉÏ˯Ãߣ¬ÎÞ·¨Íê³ÉÒ»¸öÏÈǰµÄP²Ù×÷£¬ÔòÓÉϵͳѡÔñÆäÖеÄÒ»¸ö²¢ÔÊÐíÆäÍê³ÉËüµÄP²Ù×÷£¬ÓÚÊÇ£¬¶ÔÒ»¸öÓнø³ÌÔÚÆäÉÏ˯ÃßµÄÐźÅÁ¿Ö´ÐÐÒ»´ÎV²Ù×÷Ö®ºó£¬¸ÃÐźÅÁ¿µÄÖµ¼Ó1£¬ÔÚÆäÉÏ˯ÃߵĽø³ÌÉÙÁËÒ»¸ö¡£µÝÔöÐźÅÁ¿µÄÖµºÍ»½ÐÑÒ»¸ö½ø³ÌͬÑùÒ²ÊDz»¿É·Ö¸îµÄ¡£²»»áÓнø³ÌÒòÖ´ÐÐV¶øË¯Ãß¡£


[Ŀ¼]


ÄÚºËÖеÄÐźÅÁ¿

    ÔÚLFYOSÖУ¬ÐźÅÁ¿ÊÇÄÚºËά»¤µÄÒ»ÖÖ×ÊÔ´£¬Ó¦ÓóÌÐòͨ¹ýʹÓÃÐźÅÁ¿ÊµÏÖÏß³ÌÖ®¼äµÄͬ²½ºÍ»¥³â¡£
    Ï߳̿ÉÒÔͨ¹ýÄÚºËÌṩµÄµ÷ÓÃÉêÇëºÍÊÍ·ÅÐźÅÁ¿×ÊÔ´¡£ÉêÇëÐźÅÁ¿Ê±£¬ÓÃ×ÊÔ´ID×÷µ÷ÓõÄÈë¿Ú²ÎÊý¡£Èç¹ûÁ½¸ö»ò¶à¸öÏß³ÌʹÓÃÏàͬµÄ×ÊÔ´IDÉêÇëÐźÅÁ¿£¬ÐźÅÁ¿¹ÜÀí²¿¼þ±£Ö¤ËüÃÇÉêÇëµ½ÏàͬµÄÐźÅÁ¿£¬ÒÔʵÏÖÏß³ÌÖ®¼äÕýÈ·µÄͬ²½ºÍ»¥³â¡£Ê¹ÓÃÍêÐźÅÁ¿ºóÓ¦ÊÍ·ÅÐźÅÁ¿×ÊÔ´£¬ÒÔ±ãÆäËü½ø³ÌʹÓá£
    LFYOSÖÐÐźÅÁ¿P¡¢V²Ù×÷µÄÓïÒåÒ²ºÍDijkstraÌá³öµÄÐźÅÁ¿µÄÓïÒåÓÐËù²»Í¬¡£
    ¶ÔÓÚÐźÅÁ¿V²Ù×÷£¬Ï߳̿ÉÒÔÖ¸¶¨µÝÔöÐźÅÁ¿µÄÖµ£¬²»½ö½ö¿ÉÒÔʵÏÖ¶ÔÐźÅÁ¿ÖµµÄ¼ÓÒ»²Ù×÷£¬¶øÇÒ¿ÉÒÔÔö¼ÓÈÎÒâÒ»¸öÕûÊý£»ÉõÖÁ¿ÉÒÔÖ¸¶¨»½ÐÑËùÓÐ˯ÃßÔÚ¸ÃÐźÅÁ¿ÉϵÄÏ̡߳£ÐźÅÁ¿V²Ù×÷µÄ·µ»ØÖµÎªÐźÅÁ¿µÄµ±Ç°Öµ£¬Í¨¹ýÖ¸¶¨µÝÔöÐźÅÁ¿µÄֵΪÁ㣬ִÐÐÐźÅÁ¿V²Ù×÷¿ÉÒÔ²éѯÐźÅÁ¿µÄµ±Ç°Öµ¡£Ï̻߳¹¿ÉÒÔ¶Ôij¸öÏ̶߳ø²»ÊǶÔÐźÅÁ¿Ö´ÐÐV²Ù×÷£¬ÓÉÐźÅÁ¿¹ÜÀí²¿¼þ¶ÔÏß³ÌÕýÔÚÉÏÃæË¯ÃßµÄÐźÅÁ¿Ö´ÐÐV²Ù×÷°ÑÏ̻߳½ÐÑ¡£
    ¶ÔÓÚÐźÅÁ¿P²Ù×÷£¬Èç¹ûÐźÅÁ¿µÄµ±Ç°ÖµÐ¡ÓÚµÈÓÚ0ʱ£¬Ï߳̿ÉÒÔÑ¡ÔñÊÇ˯Ãß»¹ÊÇÖ±½Ó·µ»Ø£»Èç¹ûÖ´ÐÐP²Ù×÷µÄÏß³Ì˯Ãߣ¬µÈµ½ÆäËüÏß³ÌÖ´ÐÐÁËV²Ù×÷ºó£¬Ö´ÐÐP²Ù×÷µÄÏ̷߳µ»Ø¡£P²Ù×÷µÄ·µ»ØÖµÎªÒ»ÕûÊýÀàÐ͵ıäÁ¿£¬Èç¹ûÆäËüÏß³ÌÖ´ÐеÄV²Ù×÷ͬʱ»½ÐÑÁ˶à¸öỊ̈߳¬ÕâЩÏß³ÌP²Ù×÷µÄ·µ»ØÖµ´Ó1¿ªÊ¼µÝÔöÅÅÐò£¬ÄÄÒ»¸öÏ߳̿ÉÒÔ½øÈëÁÙ½çÇøÓÉÓ¦ÓóÌÐòÈ·¶¨¡£ÔÚLFYOSÖУ¬²»½öÏß³Ì×Ô¼º¿ÉÒÔÖ´ÐÐP²Ù×÷£¬¶øÇÒ¿ÉÒÔ´úÌæÆäËüÏ̶߳Ôij¸öÐźÅÁ¿Ö´ÐÐP²Ù×÷£¬´Ó¶øÊ¹ÆäËüÏß³Ì˯Ãߣ»ÔÙͨ¹ý¶ÔÐźÅÁ¿Ö´ÐÐV²Ù×÷½«Æä»½ÐÑ£¬Òò´Ë£¬Í¨¹ýP¡¢V²Ù×÷¿ÉÒÔʵÏÖ¶ÔÏ̵߳ĵ÷¶ÈºÍ¿ØÖÆ¡£
    LFYOSÖÐÐźÅÁ¿ºÍDijkstraÌá³öµÄÐźÅÁ¿µÄÁíÒ»µã²»Í¬ÊÇ£ºÊÍ·ÅÐźÅÁ¿Ê±£¬Èç¹û´æÔÚÏß³Ì˯ÃßÔÚÐźÅÁ¿ÉÏ£¬ÕâЩÏ̱߳»È«²¿»½ÐÑ£»¶øDijkstraÌá³öµÄÐźÅÁ¿Ã»ÓÐÊͷŲÙ×÷¡£
    Èç¹ûÖ´ÐжÔÐźÅÁ¿µÄV²Ù×÷ʱ£¬Ö¸¶¨»½ÐÑËùÓÐ˯ÃßÔÚ¸ÃÐźÅÁ¿ÉϵÄỊ̈߳¬P¡¢V²Ù×÷µÄÓïÒåÀàËÆÓÚUNIXÄÚºËÖеÄsleep£¨£©ºÍwakeup£¨£©º¯Êý¡£

[Ŀ¼]


ÐźÅÁ¿¹ÜÀíÊý¾Ý½á¹¹

    ÐźÅÁ¿¹ÜÀíÊý¾Ý½á¹¹¼ûºóÃæµÄ¡°Êý¾Ý½á¹¹¡±²¿·Ö£¬ÔÚϵͳÖÐÉèÖÃÒ»ÐźÅÁ¿¿ØÖÆ¿éÊý×飬ÿ¸öÐźÅÁ¿¶ÔÓ¦×ÅÊý×éÖеÄÒ»¸öÔªËØ¡£
    ÐźÅÁ¿·Ö³ÉÁ½Àࣺ¿ÕÏÐÐźÅÁ¿ºÍÒѾ­·ÖÅäµÄÐźÅÁ¿¡£ËùÓпÕÏÐÐźÅÁ¿Á´³ÉÒ»¸öµ¥ÏòÁ´£¬ÓÃÒ»¸ö±äÁ¿£¨¿ÕÏÐÐźÅÁ¿Á´Ê×£©Ö¸Ïò¿ÕÏÐÐźÅÁ¿Á´£¬°´ÏȽøºó³öµÄջʽ¹ÜÀí·½Ê½ÊµÊ©¶Ô¿ÕÏÐÐźÅÁ¿µÄ¹ÜÀí¡£
    Ïß³ÌÓÉÓÚ¶Ôij¸öÐźÅÁ¿Ö´ÐÐÁËP²Ù×÷¶øË¯Ãߣ¬Ë¯ÃßÔÚij¸öÐźÅÁ¿ÉϵÄËùÓÐÏ̶߳¼ÒѾ­´Ó¾ÍÐ÷Ï̶߳ѻòÔËÐÐÏ̶߳ÑÖÐɾ³ý£¬²¢Á´³ÉÒ»¸öË«ÏòµÄ»·Á´£¬Á´Ê×Ö¸Õë±£´æÔÚÐźÅÁ¿¿ØÖÆ¿éÊý×éÖС£Ö´ÐÐV²Ù×÷ʱ°Ñ˯ÃßµÄÏ̴߳ÓÏ̻߳·Á´ÖÐɾ³ý£¬²åÈë¾ÍÐ÷Ï̶߳ѻòÔËÐÐÏ̶߳ÑÖС£

[Ŀ¼]


ÐźÅÁ¿¹ÜÀíµÄʵÏÖ

    ÐźÅÁ¿¹ÜÀí°üÀ¨Ëĸö¶ÔÐźÅÁ¿²Ù×÷µÄʵÏÖ£º
    ·ÉêÇëÒ»¸öÐźÅÁ¿
    ·ÊÍ·ÅÒ»¸öÐźÅÁ¿
    ·¶ÔÐźÅÁ¿Ö´ÐÐP²Ù×÷
    ·¶ÔÐźÅÁ¿Ö´ÐÐV²Ù×÷
    Ö´ÐжÔÐźÅÁ¿µÄP²Ù×÷ºÍV ²Ù×÷ÒÔǰ£¬Ê×Ïȼì²éÐźÅÁ¿µÄ״̬£¬Èç¹ûÊÇÒ»¸öûÓзÖÅäµÄÐźÅÁ¿£¬²»ÄÜ¶ÔÆäÖ´ÐÐÈκβÙ×÷£¬ÐźÅÁ¿²Ù×÷Ö±½Ó·µ»Ø£¬·ñÔò¸ù¾Ý²»Í¬µÄ²Ù×÷ÇëÇ󣬽øÐÐÏàÓ¦µÄ´¦Àí£º
    Ö´ÐÐP²Ù×÷ʱ£¬¶ÔÐźÅÁ¿µÄÖµÖ´ÐмõÒ»²Ù×÷£¬¸ù¾Ý¼õÒ»ºóÐźÅÁ¿µÄÖµ£¬·Ö±ð´¦Àí£º
    Èç¹û´óÓÚµÈÓÚ0£¬P²Ù×÷Ö±½Ó·µ»Ø£¬·µ»ØÖµÎª1¡£
    Èç¹ûСÓÚÁ㣬µ«ÊÇÖ¸¶¨ÁËP²Ù×÷²»Ë¯Ãߣ¬¶ÔÐźÅÁ¿µÄÖµÖ´ÐмÓÒ»²Ù×÷ºóP²Ù×÷·µ»Ø£¬·µ»ØÖµÎª0¡£
    Èç¹ûСÓÚÁ㣬µ«ÊÇÖ¸¶¨ÁËP²Ù×÷¿ÉÒÔ˯Ãߣ¬°ÑÏ̴߳ÓÔËÐÐÏ̶߳ѻò¾ÍÐ÷Ï̶߳Ñɾ³ý£¬²åÈëµ½ÐźÅÁ¿µÄ˯ÃßÏ̻߳·Á´ÖУ¬Ê¹Ïß³Ì˯Ãß¡£µ±Ï̱߳»ÆäËüÏß³ÌÖ´ÐеÄV²Ù×÷»½ÐÑʱ£¬ÕâЩ±»»½ÐÑÏ̵߳ÄP²Ù×÷·µ»Ø£¬±»V²Ù×÷»½Ðѵĸ÷¸öÏ̵߳ķµ»ØÖµ´Ó2¿ªÊ¼Ë³ÐòµÝÔö¡£
    Ö´ÐжÔÏ̵߳ÄV²Ù×÷ʱ£¬Ê×Ïȸù¾ÝÏß³ÌÈ·¶¨µÄÐźÅÁ¿²¢ÉèÖõÝÔöÐźÅÁ¿µÄֵΪ1£¬È»ºóÉèÖÃÒ»³õʼֵΪ0µÄµÝÔö¼ÆÊýÆ÷£¬¸ù¾ÝÖ¸¶¨µÄµÝÔöÐźÅÁ¿µÄÖµ£¬Ñ­»·Öظ´Ö´ÐÐÒÔϲÙ×÷£º
    ¶ÔÐźÅÁ¿µÄÖµºÍ¼ÆÊýÆ÷µÄÖµÖ´ÐмÓÒ»²Ù×÷¡£
    Èç¹ûÔÚÐźÅÁ¿µÄ˯ÃßÏ̻߳·Á´ÖдæÔÚ˯ÃßµÄỊ̈߳¬»½ÐÑ»·Á´ÉϵĵÚÒ»¸öỊ̈߳¬°ÑÏ̴߳ÓÐźÅÁ¿µÄ˯ÃßÏ̻߳·Á´ÖÐɾ³ý£¬²åÈëµ½ÔËÐÐÏ̶߳ѻò¾ÍÐ÷Ï̶߳ÑÖУ¬ÉèÖÃP²Ù×÷µÄ·µ»ØÖµÎª¼ÆÊýÆ÷µÄµ±Ç°Öµ£»ÆäËüÇé¿ö²»Ö´ÐÐÏ̻߳½ÐѲÙ×÷¡£
    Ö´ÐÐÉêÇëÐźÅÁ¿µ÷ÓÃʱ£¬´Ó¿ÕÏÐÐźÅÁ¿Õ»ÖÐÈ¡³öÒ»¸öÐźÅÁ¿£¬Ö´Ðгõʼ»¯²Ù×÷ºó°ÑÐźÅÁ¿ID·µ»Ø¸øÓ¦ÓóÌÐò¡£
    Ö´ÐÐÊÍ·ÅÐźÅÁ¿µ÷ÓÃʱ£¬Èç¹ûÐźÅÁ¿ÉÏ´æÔÚ˯ÃßỊ̈߳¬Ö´ÐÐV²Ù×÷½«Æä»½ÐÑ£»È»ºó°ÑÐźÅÁ¿²åÈë¿ÕÏÐÐźÅÁ¿Õ»ÖС£

[Ŀ¼]


Ïß³ÌÇ¨ÒÆ

ÄÚºËÖÐÏß³ÌÇ¨ÒÆ²¿¼þµÄʵÏÖ

    ÔÚLFYOSÖУ¬Ï̺߳ͽø³ÌµÄ¹ØÏµÊÇÒ»ÖÖÁÙʱÐԵĹØÏµ£¬Ï̲߳¢·ÇÓÀ¾ÃÐÔµØÊôÓÚijһ¸ö½ø³Ì£¬Í¨¹ýÏß³ÌÇ¨ÒÆµ÷ÓÃÒ»¸öÏ߳̿ÉÒÔ´ÓÒ»¸ö½ø³Ì½øÈëÁíÒ»¸ö½ø³Ì£¬Ö´Ðб»µ÷Óýø³ÌÏàÓ¦µÄ¹¦ÄÜ£¬ÔÚ±»µ÷Óýø³ÌÖÐÖ´ÐÐÍê±Ïºó£¬Í¨¹ýÏ̷߳µ»Øµ÷ÓÃÏß³ÌÍ˻ص½Ô­½ø³ÌÖÐÔËÐС£Í¨¹ýÏß³ÌÇ¨ÒÆµ÷ÓúÍÏ̷߳µ»Øµ÷Óã¬Ïß³ÌʵÏÖÁËÔÚ²»Í¬½ø³ÌÖ®¼äµÄÇ¨ÒÆ¡£
    ͨ¹ýÏß³ÌÇ¨ÒÆµ÷Óã¬Ò»¸öÏ߳̽øÈëÁíÒ»¸ö½ø³Ìʱ£¬ÔÚнø³ÌÖУ¬Ö»ÄÜ´Ó½ø³Ì³õʼִÐе㿪ʼִÐС£Í¨¹ýÔÚ½ø³Ì³õʼִÐе㴦·ÅÖÃÒ»¶¨µÄ¼ì²é³ÌÐò£¬¿ÉÒÔ·ÀÖ¹¶ñÒâµÄÏ̶߳Խø³ÌµÄÆÆ»µ£¬±£Ö¤Ï̵߳÷ÓõݲȫÐÔ¡£
    ͬÑù£¬µ±Ò»¸öÏ̴߳ÓÒ»¸ö½ø³Ì·µ»Øµ½Ô­À´µÄ½ø³Ìʱ£¬ÏµÍ³Ò²Òª±£Ö¤Ï̷߳µ»Øµ½ÕýÈ·µÄÖ´Ðе㣬·ÀÖ¹¶ñÒâµÄÌØÂåÒÁľÂíÔì³ÉµÄÆÆ»µ£¬Îª´Ë£¬ÔÚÏ߳̿ØÖÆ¿éÖÐרÃÅÉèÖÃÁËÏ̷߳µ»Ø¿ØÖÆ¿éÕ»¡£µ±Ò»¸öÏß³ÌÖ´ÐÐÏß³ÌÇ¨ÒÆµ÷Ó㬴ÓÒ»¸ö½ø³Ì½øÈëÁíÒ»¸ö½ø³Ìʱ£¬ÏµÍ³±£´æÏ̷߳µ»Øµ÷ÓÃʱӦ¸Ã»Ö¸´µÄ·µ»ØµØÖ·¡¢½ø³Ì±êʶ·ûµÈÐÅÏ¢£»µ±Ïß³ÌÖ´ÐÐÏ̷߳µ»Øµ÷ÓôÓÒ»¸ö½ø³Ì·µ»Øµ½Ô­À´µÄ½ø³Ìʱ£¬¸ù¾ÝÒÔǰ±£´æµÄÏ̷߳µ»ØµØÖ·£¬»Ö¸´Ïß³ÌÔÚÔ­½ø³Ì»·¾³ÖеÄÔËÐС£Í¨¹ý±£´æÏ̷߳µ»ØµØÖ·£¬·ÀÖ¹·þÎñ½ø³Ì¶Ôµ÷Óýø³Ì¶ñÒâµÄÆÆ»µ£¬±£Ö¤Ï̷߳µ»ØµÄ°²È«ÐÔ¡£

Ïß³ÌÇ¨ÒÆ²¿¼þÌṩµÄ¹¦Äܵ÷Óü°ÊµÏÖ

    Ïß³ÌÇ¨ÒÆ²¿¼þÌṩÁËÁ½¸ö¹¦Äܵ÷ÓãºÏß³ÌÇ¨ÒÆµ÷ÓúÍÏ̷߳µ»Øµ÷Óá£
    Ïß³ÌÇ¨ÒÆ²¿¼þ·ÖÏÂÃæÈý²½Ö´ÐÐÏß³ÌÇ¨ÒÆµ÷Óãº
    ·ÅжÏÄ¿±ê½ø³ÌÊÇ·ñÊÇÒ»¸öºÏ·¨µÄ½ø³Ì£¬Èç¹û·Ç·¨Ö±½Ó·µ»Ø³ö´í£»·ñÔò¼ÌÐøÏòÏÂÖ´ÐС£
    ·Èç¹ûÐèÒª°Ñµ±Ç°Ó¦¸Ã±£´æµÄÐÅϢѹÈëÏ̷߳µ»Ø¿ØÖÆ¿éÕ»ÖУ¬Ö´ÐÐѹջ²Ù×÷£¬Èç¹ûѹջ²Ù×÷Òç³ö£¬Ö±½Ó·µ»Ø³ö´íÐÅÏ¢£»Èç¹û²»ÐèÒªÖ´ÐÐѹջ²Ù×÷»òÐèÒªÖ´ÐÐѹջ²Ù×÷ÇÒѹջ²Ù×÷ûÓÐÒç³ö£¬¼ÌÐøÏòÏÂÖ´ÐС£
    ·×îºó°ÑÏ̵߳ĵ±Ç°ËùÊô½ø³ÌÉèÖÃΪĿ±ê½ø³Ì£¬¸ù¾ÝÄ¿±ê½ø³ÌµÄ³õʼִÐе㣬ÔÚÄ¿±ê½ø³ÌÖпªÊ¼Ö´ÐС£

    Ïß³ÌÇ¨ÒÆ²¿¼þ·ÖÏÂÃæ²½Ö´ÐÐÏ̷߳µ»Øµ÷Óãº
    ´ÓÏ̷߳µ»Ø¿ØÖÆ¿éÕ»Öе¯³öÓ¦¸Ã»Ö¸´µÄÐÅÏ¢¡£
    Èç¹û²»Äܵ¯³öÓ¦¸Ã»Ö¸´µÄÐÅÏ¢£¬Ïß³ÌÖÕÖ¹£¬·ñÔò¸ù¾Ýµ¯³öµÄÐÅÏ¢»Ö¸´Ïß³ÌÔÚÔ­½ø³ÌÖеÄÔËÐС£

[Ŀ¼]


ÖжÏ

ÖжϷþÎñ³ÌÐòºÍ´¦Àí»úÇл»²¿¼þµÄʵÏÖ

    ÖжϷþÎñ³ÌÐòÊǺÍÓ²¼þƽ̨ÃÜÇÐÏà¹ØµÄ£¬¶ÔÓÚÍⲿÉ豸Öжϣ¬ÖжϷþÎñ³ÌÐò¸ù¾ÝÖж϶ÔÓ¦µÄÐźÅÁ¿Ö´ÐжÔÐźÅÁ¿µÄV²Ù×÷£»¶ÔÓÚ´¦Àí»úÖ®¼äµÄÖжϣ¬ÖжϷþÎñ³ÌÐòµ÷Óô¦Àí»úÇл»²¿¼þÌṩµÄ¹¦ÄÜ£¬Ö´Ðд¦Àí»úÇл»²Ù×÷¡£
    ´¦Àí»úÇл»²¿¼þÊ×ÏÈͨ¹ý´¦Àí»úÇл»ÏìÓ¦µ÷Óã¬Í¨Öª¾ÍÐ÷Ï̹߳ÜÀí²¿¼þÖ´ÐÐÁË´¦Àí»úÇл»£¬È»ºóµ÷ÓÃÓ²¼þ´¦Àí»úÇл»²¿¼þÖ´ÐоßÌåµÄÇл»²Ù×÷¡£
Ï̻߳ñµÃ´¦Àí»úºó£¬Ê×ÏÈÅжÏÊÇ·ñÐèÒªÖ´ÐÐÇ¿ÖÆ·µ»Ø£¬Èç¹ûÐèÒª£¬Ö´ÐÐÏ̷߳µ»Øµ÷Ó÷µ»ØÉÏÒ»¼¶½ø³Ì£¬·ñÔò»Ö¸´Ïß³ÌÔÚµ±Ç°½ø³ÌÖеÄÔËÐС£

[Ŀ¼]


´¦Àí»ú

[Ŀ¼]


´¦Àí»ú¹ÜÀíÊý¾Ý½á¹¹

½ø³Ì¹ÜÀíÊý¾Ý½á¹¹

    ÔÚÄÚºËÖÐÉèÖÃÒ»½ø³Ì¿ØÖÆ¿éÊý×飬Êý¾ÝÖÐÿһ¸öÔªËØ¶ÔÓ¦Ò»¸ö½ø³Ì£¬´æ·Å×ŶÔÓ¦½ø³ÌµÄ¸÷ÏîÐÅÏ¢£¬°üÀ¨ÒÔÏÂÐÅÏ¢£º
    ·½ø³ÌµÄ³õʼִÐеã
    ·´´½¨Ï̵߳Ä×î¸ßÓÅÏȼ¶
    ·½ø³ÌµÄCapabilityУÑé
    ·²Ù×÷¸Ã½ø³ÌµÄ»¥³âÐźÅÁ¿
    ·ÔÊÐí½ø³ÌÉêÇëµÄ×î´óÐźÅÁ¿ÊýºÍµ±Ç°½ø³ÌÉêÇëµÄÐźÅÁ¿Êý
    ·ÔÊÐí½ø³Ì´´½¨µÄÏß³ÌÊýºÍµ±Ç°½ø³Ì´´½¨µÄÏß³ÌÊý
    ·¼Ç¼½ø³Ì´´½¨Ï̵߳ÄÏ̻߳·Á´Ê×Ö¸Õë
    ·¼Ç¼½ø³ÌÉêÇëÐźÅÁ¿µÄÐźÅÁ¿»·Á´Ê×Ö¸Õë
    Ò»¸ö½ø³Ì´´½¨µÄËùÓÐÏß³ÌÁ´³ÉÒ»¸öÏ̻߳·Á´£¬²¢°ÑÁ´Ê×Ö¸Õë´æ·ÅÔÚ½ø³Ì¿ØÖÆ¿éÖС£´´½¨Ïß³Ìʱ£¬ÏòÏ̻߳·Á´ÖвåÈëÒ»¸öỊ̈߳»ÖÕÖ¹Ïß³Ìʱ£¬´ÓÏ̻߳·Á´ÖаÑÏàÓ¦µÄÏß³Ìɾ³ý¡£¸ù¾ÝÏ̻߳·Á´¿ÉÒÔÈ·¶¨Ò»¸ö½ø³Ì´´½¨µÄËùÓÐÏ̡߳£
    Ò»¸ö½ø³ÌÉêÇëµÄËùÓÐÐźÅÁ¿Ò²Á´³ÉÒ»¸öÐźÅÁ¿»·Á´£¬²¢°ÑÁ´Ê×Ö¸Õë´æ·ÅÔÚ½ø³Ì¿ØÖÆ¿éÖС£ÉêÇëÐźÅÁ¿Ê±£¬ÏòÐźÅÁ¿»·Á´ÖвåÈëÒ»¸öÐźÅÁ¿£»ÊÍ·ÅÐźÅÁ¿Ê±£¬´ÓÐźÅÁ¿»·Á´ÖаÑÏàÓ¦µÄÐźÅÁ¿É¾³ý¡£¸ù¾ÝÐźÅÁ¿»·Á´¿ÉÒÔÈ·¶¨Ò»¸ö½ø³ÌÉêÇëµÄËùÓÐÐźÅÁ¿¡£

Ï߳̿ØÖÆ¿éÊý×é

    ΪÁ˹ÜÀíỊ̈߳¬ÏµÍ³ÉèÖÃÒ»Ï߳̿ØÖÆ¿éÊý×飬Êý×éÖÐÿ¸öÔªËØ¶ÔÓ¦Ò»¸öỊ̈߳¬Ï߳̿ØÖÆ¿éÖдæ·Å×ÅÒÔÏÂÐÅÏ¢£º
    ·Ï̵߳Ä״̬£¨Ë¯Ãß̬¡¢¾ÍÐ÷̬¡¢ÔËÐÐ̬£©ÒÔ¼°Ïß³Ì˯ÃßµÄÐźÅÁ¿£¨Ë¯Ãß̬£©¡¢ÔÚ¾ÍÐ÷Ï̶߳ÑÖеÄλÖ㨾ÍÐ÷̬£©»òÔÚÔËÐÐÏ̶߳ÑÖеÄλÖã¨ÔËÐÐ̬£©
    ·Ï̵߳ÄÓÅÏÈÊý
    ·Ï̵߳±Ç°ËùÔڵĽø³Ì¡¢Ïß³Ì×ÊÔ´ËùÊô½ø³Ì¼°Ï̻߳·Á´Ç°ºóÖ¸Õë
    ·Ï̷߳µ»Ø¿ØÖÆ¿éÕ»ºÍÕ»¶¥Ö¸Õë
    ·Ï̵߳ÄCapabilityУÑé

[Ŀ¼]


´¦Àí»ú¹ÜÀíµÄʵÏÖ

·ÖÅäºÍ²éѯ´¦Àí»ú×ÊÔ´

    ¸ù¾Ýµ÷ÓòÎÊý£¬ÖØÐÂÉèÖô´½¨Ï̵߳Ä×î¸ßÓÅÏȼ¶¡¢ÔÊÐí½ø³ÌÉêÇëµÄ×î´óÐźÅÁ¿Êý¡¢ºÍÔÊÐí½ø³Ì´´½¨µÄÏß³ÌÊý£¬·µ»Ø´´½¨Ï̵߳Ä×î¸ßÓÅÏȼ¶¡¢ÔÊÐí½ø³ÌÉêÇëµÄ×î´óÐźÅÁ¿ÊýºÍµ±Ç°½ø³ÌÉêÇëµÄÐźÅÁ¿Êý¡¢ÔÊÐí½ø³Ì´´½¨µÄÏß³ÌÊýºÍµ±Ç°½ø³Ì´´½¨µÄÏß³ÌÊý¡£
    Ö»ÓÐÓµÓÐϵͳµÄCapabilityУÑ飬²ÅÄܹ»·ÖÅä´¦Àí»ú×ÊÔ´£¬Ö»ÓÐÓµÓÐϵͳµÄCapabilityУÑé»ò½ø³ÌµÄCapabilityУÑ飬²ÅÄܹ»²éѯ´¦Àí»ú×ÊÔ´¡£

Ï̵߳Ĵ´½¨

    ÔÚÄÚºËÖÐÉèÖÃÒ»¸ö¿ÕÏÐÏß³ÌÐźÅÁ¿£¬²¢ÉèÖÃÆä³õֵΪÁ㣬ϵͳÆô¶¯Ê±£¬ÄÚºËΪÏ߳̿ØÖÆ¿éÊý×éÖÐÿһ¸öÔªËØ´´½¨ËùÓÐỊ̈߳¬ÕâЩÏ̴߳´½¨ºóÁ¢¼´¶ÔϵͳÖеĿÕÏÐÏß³ÌÐźÅÁ¿Ö´ÐÐP²Ù×÷¶øÔÚ¿ÕÏÐÏß³ÌÐźÅÁ¿ÉÏ˯Ãß¡£
    Ö´ÐÐÏ̵߳Ĵ´½¨¹¦Äܵ÷ÓÃʱ£¬¶Ô¿ÕÏÐÏß³ÌÐźÅÁ¿Ö´ÐÐÒ»´ÎV²Ù×÷£¬»½ÐÑÒ»¸ö˯ÃßÔÚ¿ÕÏÐÐźÅÁ¿ÉϵÄỊ̈߳¬°Ñ»½ÐѵÄÏ߳̿ØÖÆ¿éÁ´Èëµ½½ø³Ì´´½¨Ï̵߳ÄÏ̻߳·Á´ÖУ¬¶Ôµ±Ç°½ø³Ì´´½¨µÄÏß³ÌÊýÖ´ÐмÓÒ»²Ù×÷£¬×îºó³õʼ»¯Ï̷߳µ»Ø¿ØÖÆ¿éÕ»£¬½øÈë½ø³ÌÔËÐС£
    Ïß³ÌÔÚ½ø³ÌÖÐÔËÐÐÍê±Ïºó£¬Ö´ÐÐÏ̷߳µ»Øµ÷Ó㬵±²»ÄÜ·µ»ØÉÏÒ»¼¶½ø³Ìʱ£¬Ö´ÐÐÏß³ÌÖÕÖ¹²Ù×÷£¬Ê×ÏȶԵ±Ç°½ø³Ì´´½¨µÄÏß³ÌÊýÖ´ÐмõÒ»²Ù×÷£¬È»ºó°ÑÏ߳̿ØÖÆ¿é´Óµ½½ø³Ì´´½¨Ï̵߳ÄÏ̻߳·Á´ÖÐɾ³ý£¬×îºóÏ̶߳ԿÕÏÐÏß³ÌÐźÅÁ¿Ö´ÐÐÒ»´ÎP²Ù×÷ÖØÐÂ˯Ãߣ¬³ÉΪ¿ÕÏÐÏ̡߳£
    Ö»ÓÐÓµÓÐϵͳµÄCapabilityУÑé»ò½ø³ÌµÄCapabilityУÑ飬²ÅÄܹ»Îª½ø³Ì´´½¨Ï̡߳£

ÉèÖúͲéѯÏß³ÌÊôÐÔ

    Èç¹ûÉèÖÃÏß³ÌÊôÐÔ£¬Ê×ÏÈÔÚÏ߳̿ØÖÆ¿éÖÐÉèÖÃеÄÏß³ÌÓÅÏÈÊýºÍÏ̵߳ÄCapabilityУÑ飬Ȼºóµ÷ÓþÍÐ÷Ï̹߳ÜÀí²¿¼þÖ´ÐÐÏß³ÌÓÅÏÈÊýµ÷Õû£¬×îºó·µ»ØÐµÄÏß³ÌÊôÐÔ¡£
    Ö»ÓÐÓµÓÐÏß³ÌËùÊô½ø³ÌµÄCapabilityУÑéºÍµ±Ç°ËùÊô½ø³ÌµÄCapabilityУÑ飬»òÕßÖ»ÓÐÓµÓÐϵͳµÄCapabilityУÑ飬²ÅÄܹ»ÉèÖúͲéѯÏß³ÌÊôÐÔ¡£

·ÖÅäºÍÊÍ·ÅÐźÅÁ¿

    Ö´ÐÐÉêÇë²Ù×÷ʱ£¬Ê×Ïȼì²é¸Ã½ø³ÌÊÇ·ñ»¹ÔÊÐíÉêÇëÐźÅÁ¿£¬´Ó¿ÕÏÐÐźÅÁ¿»·ÖÐÈ¡³öÒ»¸öÐźÅÁ¿£¬²åÈëµ½½ø³ÌµÄÐźÅÁ¿»·Á´ÖУ»Óë´ËÏà·´£¬Ö´ÐÐÊÍ·ÅÐźÅÁ¿Ê±£¬°ÑÐźÅÁ¿´Ó½ø³ÌµÄÐźÅÁ¿»·Á´È¡ÏÂÐźÅÁ¿£¬²åÈëµ½¿ÕÏÐÐźÅÁ¿»·ÖС£
ÉèÖÃÎļþcapabilityУÑé¡¢¼ì²âÏß³ÌÔÚÖ´Ðнø³ÌÖÐÊÇ·ñÄܹ»·ÃÎÊÎļþ
¸Ã²Ù×÷µÄʵÏֺܼòµ¥£¬Ö±½Ó°ÑÎļþµÄcapability±£´æÔÚÄÚºËÏàÓ¦Êý¾Ý½á¹¹ÖС£

[Ŀ¼]


´æ´¢¹ÜÀí

[Ŀ¼]


´æ´¢¹ÜÀíÊý¾Ý½á¹¹

    ÔÚ×î³õµÄʵÏÖÖУ¬´æ´¢¹ÜÀíÊÇÔÚÄÚºËÒÔÍâÓÉÄÚ´æ¹ÜÀíÆ÷ʵʩµÄ¡£ÎªÁËÌá¸ß´æ´¢¹ÜÀíµÄÐÔÄÜ£¬ÔÚµ±Ç°µÄʵÏÖÖУ¬°ÑÄÚ´æ¹ÜÀíÆ÷·ÅÈëºËÄÚ£¬²¢ÌṩרÃŵÄϵͳ¹¦Äܵ÷ÓýӿÚÀ´²Ù×÷´æ´¢¹ÜÀíÆ÷£¬ºÍ´æ´¢¹ÜÀíÓйصÄÊý¾Ý½á¹¹°üÀ¨£ºÒ³¿ò¿ØÖÆ¿é±í¡¢¿ÕÏÐÒ³¿ò¶ÓÁС¢´ò¿ªÎļþ¿ØÖÆ¿é±í¡¢¿ÕÏдò¿ªÎļþ¶ÓÁС¢´æ´¢Óò¿ØÖÆ¿é±í¡¢ÒÔ¼°µØÖ·Ó³ÉäÒ³±í¡£

Ò³¿ò¿ØÖÆ¿é±í

    Ò³¿ò¿ØÖÆ¿é±íÓÃÓÚ¹ÜÀíÒ³¿ò£¬Ã¿¸öÒ³¿ò¶ÔÓ¦±íÖеÄÒ»Ï¸ù¾ÝÒ³¿òµÄʹÓÃÇé¿ö£¬Ò³¿ò¿ØÖÆ¿é±íÖеıíÏîÁ´Èë¿ÕÏÐÒ³¿ò¶ÓÁлòÒ³¿òÎļþ¶ÓÁÐÖС£ÔÚÒ³¿ò¿ØÖÆ¿éÖдæ·Å×ÅÒ³¿òµÄÓйØÐÅÏ¢£¬ÆäÖаüÀ¨£ºÒ³¿òµÄ״̬£¨¿ÕÏС¢ÕýÔÚ¶Á¡¢Î´Ð޸ġ¢ÒÑÐ޸ġ¢ÕýÔÚд£©£¬Ò³¿òÖеÄÊý¾ÝÔÚÍâ´æÎļþÖÐµÄÆ«ÒÆÁ¿£¬Ò³¿òÖжÔÓ¦µÄµØÖ·Ó³ÉäÐÅÏ¢µÈ¡£

¿ÕÏÐÒ³¿ò¶ÓÁÐ

    ÔÚÿ¸ö´æ´¢ÌåÖÐÉèÖÃÒ»¸ö¿ÕÏÐÒ³¿ò¶ÓÁУ¬¿ÕÏÐÒ³¿ò¶ÓÁеĽṹÈçͼ4-5Ëùʾ£¬´æ´¢ÌåÖÐËùÓÐûÓб»·ÖÅäµÄÒ³¿ò¶¼±»Á´Èë¿ÕÏÐÒ³¿ò¶ÓÁÐÖУ¬²¢ÓÿÕÏжÓÁжÓÊ×Ö¸Ïò¿ÕÏÐÒ³¿ò¶ÓÁÐÖеĵÚÒ»¸öÒ³¿ò¡£ÏµÍ³°´Õ»Ê½¶ÓÁеķ½Ê½¹ÜÀí¿ÕÏÐÒ³¿ò¶ÓÁУ¬Ã¿´Î·ÖÅäÒ»¸öÒ³¿ò£¬ÏµÍ³°Ñ¶ÓÁÐÊײ¿µÄÒ³¿ò·ÖÅ䏸´æ´¢Óò£¬²¢°Ñ·ÖÅäµÄÒ³¿ò´Ó¶ÓÁÐÊײ¿É¾³ý£»Ã¿´ÎÊÍ·ÅÒ»¸öÒ³¿òʱ£¬ÏµÍ³°ÑÊͷŵÄÒ³¿ò²åÈë¶ÓÁÐÊײ¿¡£

Îļþ´°¿Ú¿ØÖÆ¿é±í

    Îļþ´°¿Ú¿ØÖÆ¿é±íÓÃÓÚʵʩ¶ÔÎļþ´°¿ÚµÄ¹ÜÀí£¬Ã¿¸öÔÚÄÚ´æÖдò¿ªµÄÎļþ´°¿Ú¶ÔÓ¦±íÖеÄÒ»Ïî¡£Èç¹ûÎļþ´°¿ÚÒѾ­´ò¿ª£¬´ò¿ªÎļþ´°¿ÚÔÚÎļþ´°¿Ú¿ØÖÆ¿é±íÖжÔÓ¦µÄ±íÏîÁ´Èëij¸ö´æ´¢Óò¿ØÖÆ¿éµÄ´ò¿ªÎļþ´°¿Ú¶ÓÁУ¬·ñÔòÁ´Èë¿ÕÏÐÎļþ´°¿Ú¶ÓÁС£ÔÚ´ò¿ªÎļþ´°¿Ú¿ØÖÆ¿éÖдæ·Å×ÅÎļþ´°¿ÚµÄÓйØÐÅÏ¢£¬°üÀ¨£ºÎļþ·þÎñÆ÷µÄ±êʶ¡¢¶ÔÓ¦Íâ´æÉÏÎļþµÄ±êʶ¡¢·ÃÎÊÎļþµÄȨÏÞ¡¢Îļþ´°¿ÚµÄ´óСºÍÔÚÍâ´æÎļþÖеÄλÖᢵ±Ç°Ê¹ÓõÄÒ³¿ò¡¢·ÃÎÊÎļþµÄCapabilityУÑé¡¢Îļþ´°¿Ú¿ØÖÆ¿éËùÊôµÄ´æ´¢ÓòµÈ¡£

¿ÕÏÐÎļþ´°¿Ú¶ÓÁÐ

    ºÍ¿ÕÏÐÒ³¿ò¶ÓÁÐÏàËÆ£¬ÔÚÿ¸ö´æ´¢ÌåÖÐÉèÖÃÒ»¸ö¿ÕÏÐÎļþ´°¿Ú¶ÓÁУ¬¿ÕÏÐÎļþ´°¿Ú¶ÓÁеĽṹÈçͼ4-6Ëùʾ£¬´æ´¢ÌåÖÐËùÓÐûÓб»·ÖÅäµÄÎļþ´°¿Ú¿ØÖƿ鶼±»Á´Èë¿ÕÏÐÎļþ´°¿Ú¶ÓÁÐÖУ¬²¢ÓÿÕÏжÓÁжӶÓÊ×Ö¸Ïò¿ÕÏÐÎļþ´°¿Ú¶ÓÁÐÖеĵÚÒ»¸öÎļþ´°¿Ú¿ØÖƿ顣ϵͳ°´Õ»Ê½¶ÓÁеķ½Ê½¹ÜÀí¿ÕÏÐÎļþ´°¿Ú¶ÓÁУ¬Ã¿´Î·ÖÅäÒ»¸öÎļþ´°¿Ú¿ØÖƿ飬ϵͳ°Ñ¶ÓÁÐÊײ¿µÄÎļþ´°¿Ú¿ØÖÆ¿é·ÖÅ䏸´æ´¢Óò£¬²¢°Ñ·ÖÅäµÄÎļþ¿ØÖÆ´°¿Ú¿é´Ó¶ÓÁÐÊײ¿É¾³ý£»Ã¿´ÎÊÍ·ÅÒ»¸öÎļþ´°¿Ú¿ØÖÆ¿éʱ£¬ÏµÍ³°ÑÊͷŵÄÎļþ´°¿Ú¿ØÖÆ¿é²åÈë¶ÓÁÐÊײ¿¡£

´æ´¢Óò¿ØÖÆ¿é±í

    ÔÚϵͳÖÐÉèÖô洢ÓòµÄÄ¿µÄÊÇΪÁËʵʩ¶Ô´æ´¢×ÊÔ´µÄ¹ÜÀí¡£Í¨¹ýΪ´æ´¢Óò·ÖÅäºÍ»ØÊÕ´æ´¢×ÊÔ´£¬ÏµÍ³·ÀֹijЩ´æ´¢ÓòÕ¼Óùý¶àµÄ×ÊÔ´¡£´æ´¢×ÊÔ´°üÀ¨£ºÄÚ´æ´ò¿ªÎļþ´°¿ÚºÍÒ³¿ò¡£
    ÔÚÿ¸ö´æ´¢ÌåÖÐÉèÖÃÒ»¸ö´æ´¢Óò¿ØÖÆ¿é±í£¬´æ´¢Óò¿ØÖÆ¿é±íµÄ½á¹¹Èçͼ4-7Ëùʾ£¬±íÖÐÿһÏî¶ÔÓ¦Ò»¸ö´æ´¢Óò£¬ÆäÖеÄÐÅÏ¢°üÀ¨£ºÔÊÐí´ò¿ªµÄ×î´óÎļþ´°¿ÚÊý¡¢µ±Ç°´ò¿ªµÄÎļþ´°¿ÚÊý¡¢ÔÊÐíʹÓõÄ×î´óÒ³¿òÊý¡¢µ±Ç°Ê¹ÓõÄÒ³¿òÊý¡¢Ê¹ÓÃÁ˶àÉÙÒ³¿òÊýºóÆô¶¯Ð´²Ù×÷°ÑÊý¾Ý·´Ð´»ØÎļþ¡¢µ±Ç°¶àÉÙ¸öÒ³¿òÔÚÖ´ÐжÁ²Ù×÷¡¢µ±Ç°¶àÉÙ¸öÒ³¿òÔÚÖ´ÐÐд²Ù×÷¡¢µ±Ç°´ò¿ªÎļþ´°¿Ú¶ÓÁеÄÊ×Ö¸Õë¡¢µ±Ç°Ê¹ÓõÄÒ³¿ò¶ÓÁеÄÊ×Ö¸Õë¡¢´æ´¢ÓòCapabilityµÄУÑéÐÅÏ¢¡£
    Ò»¸ö´æ´¢ÓòËùÓеĴò¿ªÎļþ´°¿Ú¿ØÖÆ¿éÁ´³ÉÒ»¸öË«ÏòµÄ»·ÐζÓÁУº´ò¿ªÎļþ´°¿Ú¶ÓÁУ¬²¢°Ñ¶ÓÊ×Ö¸ÕëºÍ´æ´¢Óòµ±Ç°´ò¿ªµÄÎļþ´°¿ÚÊý´æ·ÅÔÚ´æ´¢Óò¿ØÖÆ¿é±íµÄ±íÏîÖУ¬Í¨¹ý±È½ÏÔÊÐí´æ´¢Óò´ò¿ªµÄÎļþ´°¿ÚÊýºÍµ±Ç°¸Ã´æ´¢Óò´ò¿ªµÄÎļþ´°¿ÚÊý£¬ÏµÍ³¿ÉÒÔÅжÏÊÇ·ñ»¹Äܹ»Îª¸Ã´æ´¢Óò´ò¿ªÎļþ´°¿Ú£¬·ÀֹΪijһ¸ö»òij¼¸¸ö´æ´¢Óò´ò¿ª¹ý¶àµÄÎļþ´°¿Ú£»Í¨¹ý´æ´¢Óò´ò¿ªÎļþ´°¿Ú¶ÓÁеÄÊ×Ö¸Õ룬ϵͳ¿ÉÒÔ²éÕÒµ½´æ´¢Óò´ò¿ªËùÓÐÎļþ´°¿ÚµÄÎļþ´°¿Ú¿ØÖƿ顣
    ÔÚLFYOSÖУ¬ÄÚ´æµÄ×÷ÓÃÊÇ»º³åÎļþÖеÄÊý¾Ý£¬Ò»¸öÒ³¿ò´æ·Å×ÅÍâ´æÉÏÎļþÖеÄÒ»¶ÎÊý¾Ý¡£Ã¿¸öÎļþʹÓõÄËùÓÐÒ³¿òµÄ¿ØÖƿ飬ҲÁ´³ÉÒ»¸ö»·ÐζÓÁУºÎļþÒ³¿ò¶ÓÁУ¬²¢°Ñ¶ÓÊ×Ö¸Õë´æ·ÅÔÚÎļþ¿ØÖÆ¿éÖС£¸ù¾ÝÎļþÒ³¿ò¶ÓÁУ¬ÏµÍ³¿ÉÒÔÕÒµ½ÎªÎļþ·ÖÅäµÄËùÓÐÒ³¿ò¡£
    Ò»¸ö´æ´¢ÓòʹÓõÄËùÓд¦ÓÚδÐÞ¸Ä״̬ºÍÒÑÐÞ¸Ä״̬µÄÒ³¿òÒ²Á´³ÉÒ»¸ö»·ÐζÓÁУºÒ³¿ò»º³å¶ÓÁУ¬²¢°Ñ¶ÓÊ×Ö¸Õë´æ´¢ÔÚ´æ´¢Óò¿ØÖÆ¿é±íÖС£ÏµÍ³¸ù¾ÝÏ̶߳ÔÒ³¿òµÄ·ÃÎÊ£¬°´LRUË㷨ά»¤Ò³¿ò»º³å¶ÓÁС£Ã¿´ÎÏò¶ÓÁÐÖвåÈëÒ»¸öÒ³¿ò£¬ÏµÍ³°Ñ¸ÃÒ³¿ò²åÈëÔÚÁ´Ê×£»Ã¿´ÎÐèÒª´Ó¶ÓÁÐÖÐÌÔÌ­Ò³¿ò£¬ÏµÍ³Ñ¡ÔñÌÔÌ­¶ÓβµÄÒ³¿ò£»Í¨¹ý°ÑÒ³¿ò´Ó¶ÓÁÐÖÐɾ³ýºó²åÈëµ½¶ÓÊ×£¬ÏµÍ³ÊµÏÖÁËά»¤Ò³¿ò¶ÓÁеÄLRUËã·¨¡£

[Ŀ¼]


Ò³¿ò״̬µÄ±äǨ

    ÔÚLFYOSÖУ¬ÔÚÈκÎÒ»¸öʱ¿Ì£¬Ã¿¸öÒ³¿ò´¦ÓÚͼ4-8ËùʾµÄÎå¸ö״̬֮һ£¬²¢°´Í¼4-8 ËùʾµÄÒ³¿ò״̬±äǨͼ¸Ä±äÆä״̬¡£
    Ò»¸ö±»Á´ÈëÔÚ¿ÕÏÐÒ³¿ò¶ÓÁÐÖеÄÒ³¿ò´¦ÓÚ¿ÕÏÐ̬£¬Ò»¸öÒ³¿ò´¦ÓÚ¿ÕÏÐ̬Òâζ×ÅÔÚ¸ÃÒ³¿òÖÐûÓдæ·ÅÎļþÊý¾Ý£¬Ò²²»´æÔÚµØÖ·Ó°Éä°ÑÐéÄâµØÖ·Ó°Éäµ½¸ÃÒ³¿ò¡£
    µ±Ï̷߳ÃÎÊÎļþÖеÄÊý¾Ýʱ£¬Ö´ÐеØÖ·Ó°É䣬Èç¹ûÎļþÖеÄÊý¾Ý»¹Ã»ÓжÁÈëµ½Äڴ棬µØÖ·Ó°Éäʧ°Ü£¬ÒýÆð´æ´¢·ÃÎÊʧЧÒì³££¬Ö´ÐÐÒì³£´¦Àí³ÌÐò£¬ÓɲÙ×÷ϵͳΪ¸ÃÎļþ·ÖÅäÒ»¸öÒ³¿ò£¬°Ñ¸ÃÒ³¿ò´Ó¿ÕÏÐÒ³¿ò¶ÓÁÐÖÐɾ³ý£¬²åÈëÎļþÒ³¿ò¶ÓÁУ¬µ÷ÓÃÎļþϵͳִÐжÁÎļþ²Ù×÷£¬°ÑÎļþÊý¾Ý´ÓÍâ´æ¶ÁÈëÄڴ棬´Ëʱҳ¿ò´¦ÓÚÕýÔÚ¶Á£¨reading£©×´Ì¬¡£µ±Ò³¿ò´¦ÓÚÕýÔÚ¶Á£¨reading£©×´Ì¬Ê±£¬±íʾÎļþϵͳÕýÔÚ¶ÁÈëÎļþÊý¾Ý£¬ÓÐЩÊý¾ÝÒѾ­¶ÁÈëÁËÄڴ棬ÓÐЩÊý¾Ý»¹´æÔÚÓÚÍâ´æÖУ¬¸ÃÒ³¿òÔÝʱ²»ÄÜ·ÃÎÊ£¬Ò²¾ÍÊÇ˵£¬µ±Ò³¿ò´¦ÓÚÕýÔÚ¶Á£¨reading£©×´Ì¬Ê±£¬Ò³¿òÖеÄÊý¾ÝÊDz»È·¶¨µÄ£¬ÐèÒª·ÃÎʸÃÒ³¿òµÄÏß³ÌÐèÒªÔÝʱ˯Ãߣ¬µÈµ½¶Á²Ù×÷Íê±ÏºóÔÙ±»»½ÐÑ¡£
    ÎļþϵͳִÐжÁÎļþ²Ù×÷£¬°ÑÎļþÊý¾Ý¶ÁÈëÄÚ´æÒÔºó£¬Ò³¿òÍ˳öÕýÔÚ¶Á״̬£¬½øÈëδÐÞ¸Ä״̬£¨Not_modified£©¡£°ÑÒ³¿ò²åÈëµ½Ò³¿ò»º³å¶ÓÁÐÖС£µ±Ò³¿ò´¦ÓÚδÐÞ¸Ä״̬ʱ£¬Ò³¿òÖеÄÊý¾ÝºÍÍâ´æÎļþÖеÄÊý¾ÝÒ»Ö£¬Ï߳̿ÉÒÔ·ÃÎʸÃÒ³¿òÖеÄÊý¾Ý£¬µ±ÏµÍ³ÐèÒªÌÔÌ­¸ÃÒ³¿òʱ£¬²»ÐèÒª°ÑÒ³¿òÖеÄÊý¾ÝдÈëÍâ´æµÄÎļþÖС£
    Èç¹ûÒ³¿òÊÇ¿ÉдµÄ£¬Ëæ×ÅÏ̶߳ÔÒ³¿òµÄ·ÃÎÊ£¬Ï߳̽«¶ÔÒ³¿òÖеÄÊý¾ÝÖ´ÐÐд²Ù×÷£¬Ò³¿òÍ˳öδÐÞ¸Ä״̬£¬½øÈëÒÑÐÞ¸Ä״̬£¬±íʾ´Ëʱҳ¿òÖÐÊý¾ÝºÍÍâ´æÎļþÖеÄÊý¾Ý²»Ò»Ö£¬ÌÔÌ­¸ÃÒ³¿òʱÐèÒª°Ñ¸ÃÒ³¿òÖеÄÊý¾Ý·´Ð´»ØÎļþÖС£
    Ëæ×ÅÍâ´æÎļþÖеÄÊý¾Ý±»´óÁ¿¶ÁÈëÄڴ棬´æ´¢Óò½«Óþ¡Ò³¿ò£¬Ê¹µÃ´æ´¢ÓòûÓÐ×ã¹»µÄÒ³¿ò´æ·ÅÎļþÖеÄÊý¾Ý£¬´ËʱϵͳÐèÒªÌÔÌ­Ò»²¿·ÖÒ³¿ò¡£ÏµÍ³°´LRUË㷨ѡÔñÐèÒªÌÔÌ­µÄÒ³¿ò£¬Óë´ËÏà¹ØµÄÊý¾Ý½á¹¹ÊÇÒ³¿ò»º³å¶ÓÁС£Ã¿´Îϵͳ·ÃÎÊÒ»¸öÒ³¿ò£¬ÏµÍ³¶¼Òª°Ñ¸ÃÒ³¿ò´ÓÒ³¿ò»º³å¶ÓÁÐÖÐɾ³ý£¬ÔÙ°ÑËü²åÈëµ½Ò³¿ò»º³å¶ÓÁеĶÓÊס£Ëæ×ÅϵͳµÄÔËÐУ¬¾­³£±»·ÃÎʵÄÒ³¿ò½«Î»ÓÚ¶ÓÁеÄÊײ¿£¬¶ø²»¾­³£±»·ÃÎʵÄÒ³¿ò½«Î»ÓÚ¶ÓÁеÄβ²¿¡£ÏµÍ³Ã¿´ÎÑ¡ÔñÌÔÌ­¶ÓÁÐβ²¿µÄÒ³¿ò£¬´Ó¶øÊµÏÖά»¤Ò³¿ò¶ÓÁеÄLRUËã·¨¡£
    µ±ÏµÍ³ÐèÒªÌÔ̭ijһҳ¿òʱ£¬Èç¹ûÒ³¿ò´¦ÓÚδÐ޸ģ¨Not_modified£©×´Ì¬£¬°Ñ¸ÃÒ³¿ò´Ó´ò¿ªÎļþ´°¿Ú¶ÓÁкÍÒ³¿ò»º³å¶ÓÁÐÖÐɾ³ý£¬²åÈë¿ÕÏÐÒ³¿ò¶ÓÁУ¬²¢°Ñ״̬ÓÉδÐ޸ģ¨Not_modified£©×´Ì¬¸ÄдΪ¿ÕÏУ¨Free£©×´Ì¬£»Èç¹ûÒ³¿ò´¦ÓÚÒÑÐ޸ģ¨Modified£©×´Ì¬£¬°Ñ״̬ÓÉÒÑÐ޸ģ¨Modified£©×´Ì¬¸ÄдΪÕýÔÚд£¨Writing£©×´Ì¬£¬°ÑÒ³¿ò´ÓÒ³¿ò»º³å¶ÓÁÐÖÐɾ³ý£¬µ÷ÓÃÎļþϵͳִÐÐд²Ù×÷£¬¶ÁдÍê³Éºó°Ñ״̬ÓÉÕýÔÚд£¨Writing£©×´Ì¬¸ÄдΪδÐ޸ģ¨Not_modified£©×´Ì¬£¬²¢°Ñ¸ÃÒ³¿ò²åÈëµ½Ò³¿ò»º³å¶ÓÁÐÖС£
    µ±Ò³¿ò½øÈëÕýÔÚ¶Á£¨Reading£©×´Ì¬»òÕýÔÚд£¨Writing£©×´Ì¬Ê±£¬´ÓÒ³¿ò»º³å¶ÓÁÐÖÐɾ³ý£»µ±Ò³¿ò½øÈëδÐ޸ģ¨Not_modified£©×´Ì¬Ê±£¬²åÈëµ½Ò³¿ò»º³å¶ÓÁÐÖС£


[Ŀ¼]


Ò³¿òÉ¢ÁжÓÁÐ

    ÎÒÃÇÌá³öµÄLFYOSÃæÏò64λ´¦Àí»ú£¬64λ´¦Àí»úÖеĵØÖ·Ó°Éä»úÖÆ´ó¶à²ÉÓÃÄæÏòÒ³±íºÍÈí¼þTLB¡£Ö¸ÁîÖ´ÐÐʱ£¬¾ø´ó¶àÊýµÄµØÖ·Ó°ÉäÓÉTLBʵÏÖ£¬µ±TLBÓ°ÉäʧЧʱ£¬ÒýÆðTLBÓ°ÉäʧЧÒì³££¬×ªÒì³£´¦Àí³ÌÐò£¬Òì³£´¦Àí³ÌÐò²éѯҳ±í£¬²¢¸ù¾Ý²éѯҳ±íµÄ½á¹ûÌî³äTLBÖеÄÐÅÏ¢£¨ËäÈ»INTEL´¦Àí»úÖеĵØÖ·Ó³Éä»úÖÆÃ»ÓвÉÓÃÄæÏòÒ³±íºÍÈí¼þTLB£¬ÔÚÎÒÃǵ±Ç°µÄʵÏÖÖУ¬ÈÔÈ»°Ñ´æ´¢¹ÜÀíÆ÷Éè¼Æ³ÉÃæÏòÄæÏòÒ³±íºÍÈí¼þTLB£¬¶ø°ÑÕû¸öTELÒ³±í¿´³ÉÊÇÒ»¸ö¾Þ´óµÄTLB£©¡£
    ÎÒÃÇʵÏÖµÄÈí¼þÄæÏòÒ³±í×éÖ¯³ÉÈçͼ4-9 ËùʾµÄÁ´Ê½É¢Áнṹ£¬ÏàͬɢÁк¯ÊýÖµµÄÒ³¿òÁ´³ÉÒ»¸öË«ÏòµÄ»·Á´£¬²¢°ÑÁ´Ê×Ö¸Õë´æ·ÅÔÚÉ¢ÁÐÊý×éÖС£²éѯҳ±íʱ£¬Ê×Ïȸù¾ÝÐéÄâµØÖ·¼ÆËã³öÉ¢Áк¯ÊýÖµ£¬¸ù¾Ýº¯Êýֵȷ¶¨ÔÚÉ¢ÁÐÊý×éÖжÔÓ¦µÄÊý¾ÝÏÕÒµ½»·ÐÎÉ¢ÁÐÁ´¶ÔÓ¦µÄÁ´Ê×£¬´ÓÁ´Ê׿ªÊ¼£¬Ë³ÐòËÑË÷Ö±ÖÁÕÒµ½¶ÔÓ¦µÄÒ³¿ò»ò»Øµ½Á´Ê×Ϊֹ¡£
    Èç¹ûÔÚ»·ÐÎÉ¢ÁÐÁ´ÖÐÕÒµ½Á˶ÔÓ¦µÄÒ³¿ò£¬ÏµÍ³Ê×Ïȸù¾Ý¸ÃÒ³¿òµÄÐÅÏ¢Ìî³äÈí¼þTLBÖеÄÐÅÏ¢£¬È»ºó£¬ÔÚÒ³¿ò»º³å¶ÓÁÐÖУ¬°Ñ¸ÃÒ³¿òÒÆµ½Ò³¿ò»º³å¶ÓÁеĶÓÊ×£¨Ê×ÏÈ´Ó¶ÓÁÐÖÐɾ³ý£¬ÔÚ°ÑËü²åÈë¶ÓÊ×£©£¬´Ó¶øÊµÏÖ¶ÔÒ³¿ò»º³å¶ÓÁйÜÀíµÄLRUËã·¨¡£
    Èç¹ûÔÚ»·ÐÎÉ¢ÁÐÁ´ÖÐûÓÐÕÒµ½Á˶ÔÓ¦µÄÒ³¿ò£¬±íʾÐéÄâµØÖ·¶ÔÓ¦µÄÎļþÊý¾ÝÔÝʱ´æÔÚÓÚÍâ´æ£¬ÐèÒª°ÑËü´ÓÍâ´æµ÷ÈëÄڴ棬Ϊ´ËϵͳÊ×Ïȸù¾Ýµ±Ç°Îļþ¶ÔÓ¦µÄ´æ´¢Óò£¬±È½Ï´æ´¢ÓòµÄÔÊÐíʹÓõÄ×î´óÒ³¿òÊýºÍµ±Ç°Ê¹ÓõÄÒ³¿òÊý£¬È·¶¨¸Ã´æ´¢ÓòÊÇ·ñÔÊÐíÉêÇë¿ÕÏеÄÒ³¿ò¡£
    Èç¹û´æ´¢Óòµ±Ç°Ê¹ÓõÄÒ³¿òÊýСÓÚÔÊÐíʹÓõÄ×î´óÒ³¿òÊý£¬±íʾϵͳÔÊÐí¸Ã´æ´¢ÓòÉêÇë¿ÕÏеÄÒ³¿ò£¬ÏµÍ³´Ó¿ÕÏÐÒ³¿ò¶ÓÁÐÖÐÈ¡³öÒ»¸ö¿ÕÏÐÒ³¿ò£¬°ÑËü²åÈëµ½Ò³¿òÎļþ¶ÓÁкÍÒ³¿òÉ¢ÁжÓÁÐÖУ¬ÉèÖøÃÒ³¿òµÄ״̬ΪÕýÔÚ¶Á״̬£¨Reading£©£¬µ÷ÓÃÎļþϵͳִÐжÁÎļþ²Ù×÷¡£·ÃÎʸÃÒ³¿òµÄÏß³Ì˯Ãß¡£
Èç¹û´ËʱÆäËüµÄÏ̷߳ÃÎʸÃÒ³¿ò£¬ÏµÍ³Ê¹ÕâЩÏß³Ì˯Ãߣ¬µÈ´ý¶Á²Ù×÷Íê³Éºó»½ÐÑ¡£
    ÎļþϵͳִÐÐÍê±ÏÎļþ¶Á²Ù×÷ÒÔºó£¬Í¨¹ýϵͳ¹¦Äܵ÷ÓÃ֪ͨ²Ù×÷ϵͳ£¬²Ù×÷ϵͳ°ÑÒ³¿òµÄ״̬ÓÉÕýÔÚ¶Á״̬¸ÄдΪδÐÞ¸Ä״̬£¨Not_modified£©£¬°ÑÒ³¿ò²åÈëµ½Ò³¿ò»º³å¶ÓÁУ¬»½ÐÑ˯ÃßµÄÏ̡߳£
    Ëæ×ÅÏ̶߳ÔÎļþµÄ·ÃÎÊ£¬ÏµÍ³ÐÞ¸ÄÒ³¿òÔÚÒ³¿ò»º³å¶ÓÁÐÖеÄλÖ㬰Ѿ­³£·ÃÎʵÄÒ³¿ò·ÅÔÚ¶ÓÁеÄÊײ¿£¬²»¾­³£·ÃÎʵÄÒ³¿ò·ÅÔÚ¶ÓÁеÄβ²¿£»Ïß³ÌÒ²¿ÉÄܶÔÎļþÖеÄÊý¾ÝÖ´ÐÐд²Ù×÷£¬Õ⽫ÒýÆðÒ³¿òµÄ״̬ÓÉδÐÞ¸Ä״̬£¨Not_modified£©½øÈëÒÑÐÞ¸Ä״̬£¨modified£©£¬±íʾÈç¹ûÌÔÌ­¸ÃÒ³¿ò£¬Ò³¿òÖеÄÊý¾ÝÐèÒª·´Ð´»ØÎļþÖС£
    Èç¹ûÉêÇë¿ÕÏÐÒ³¿òʱ£¬´æ´¢Óòµ±Ç°Ê¹ÓõÄÒ³¿òÊý´óÓÚµÈÓÚÔÊÐíʹÓõÄ×î´óÒ³¿òÊý£¬±íʾ¸Ã´æ´¢ÓòÒѾ­Ê¹ÓÃÁËÌ«¶àµÄ¿ÕÏÐÒ³¿ò£¬ÐèÒªÖ´ÐÐÌÔÌ­Ëã·¨£¬°ÑÒ»²¿·ÖÒ³¿òÖеÄÐÅÏ¢·´Ð´»ØÎļþÖС£
    ϵͳ°´LRUË㷨ѡÔñ±»ÌÔÌ­µÄÒ³¿ò£¬Ã¿´Î×ÜÊÇÑ¡ÔñÌÔÌ­Ò³¿ò»º³å¶ÓÁÐβ²¿µÄÒ³¿ò£¬Ò²¾ÍÊǶÓÁÐÊײ¿µÄǰһ¸öÒ³¿ò£¨ÒòΪҳ¿ò»º³å¶ÓÁÐÊÇ»·ÐζÓÁУ©¡£¸ù¾ÝÐèÒªÌÔÌ­µÄÒ³¿òµÄ״̬²»Í¬£¬ÏàÓ¦µÄÌÔÌ­·½Ê½Ò²²»Í¬¡£
    Èç¹ûÐèÒªÌÔÌ­µÄÒ³¿òµÄ״̬ΪδÐÞ¸Ä״̬£¨Not_modified£©£¬±íʾ¸ÃÒ³¿òÖеÄÊý¾ÝºÍÍâ´æÎļþÖеÄÊý¾ÝÒ»Ö£¬ÏµÍ³°Ñ¸ÃÒ³¿ò´ÓÒ³¿òÉ¢ÁжÓÁС¢Ò³¿ò»º³å¶ÓÁкÍÒ³¿òÎļþ¶ÓÁÐÖÐɾ³ý£¬×´Ì¬ÐÞ¸ÄΪ¿ÕÏÐ̬£¨Free£©£¬°Ñ¸ÃÒ³¿òËÍÈë¿ÕÏÐÒ³¿ò¶ÓÁУ¬ÏµÍ³³É¹¦»ØÊÕÒ³¿ò¡£
    Èç¹ûÐèÒªÌÔÌ­µÄÒ³¿òµÄ״̬ΪÒÑÐÞ¸Ä״̬£¨Modified£©£¬±íʾ¸ÃÒ³¿òÖеÄÊý¾ÝºÍÍâ´æÎļþÖеÄÊý¾Ý²»Ò»Ö£¬ÏµÍ³ÐèÒª°Ñ¸ÃÒ³¿òÖеÄÊý¾Ý·´Ð´»ØÎļþÖС£ÏµÍ³°Ñ¸ÃÎļþµÄ״̬ÓÉÒÑÐÞ¸Ä״̬£¨Modified£©¸Ä±äΪÕýÔÚд״̬£¨Writing£©£¬°Ñ¸ÃÒ³¿ò´ÓÒ³¿ò»º³å¶ÓÁÐÖÐɾ³ý£¬Æô¶¯ÎļþϵͳִÐÐдÎļþ²Ù×÷¡£
    ÎļþϵͳִÐÐÍêд²Ù×÷ºó£¬Ò³¿òÓÉÕýÔÚд״̬£¨Writing£©¸Ä±äΪδÐÞ¸Ä״̬£¨Not_modified£©£¬±íʾ¸ÃÒ³¿òÖеÄÊý¾ÝºÍÍâ´æÎļþÖеÄÊý¾ÝÒ»Ö£¬°Ñ¸ÃÒ³¿ò²åÈëµ½Ò³¿ò»º³å¶ÓÁÐÖС£
    ´¦ÓÚÒ³¿ò»º³å¶ÓÁеÄÒ³¿ò½ö½ö¿ÉÄÜ´¦ÓÚδÐÞ¸Ä״̬£¨Not_modified£©ºÍÒÑÐÞ¸Ä״̬£¨Modified£©£¬²»¿ÉÄÜ´¦ÓÚ¿ÕÏÐ̬£¨Free£©¡¢ÕýÔÚ¶Á״̬£¨Reading£©»òÕýÔÚд£¨Writing£©×´Ì¬¡£


[Ŀ¼]


´æ´¢¹ÜÀíµÄʵÏÖ

´ò¿ªºÍ¹Ø±ÕÎļþ´°¿Ú

    Ö´Ðдò¿ªÎļþ´°¿Úµ÷ÓÃʱ£¬Ê×ÏȱȽÏÔÊÐí¸Ã´æ´¢Óò´ò¿ªµÄ×î´óÎļþ´°¿ÚÊýºÍµ±Ç°¸Ã´æ´¢Óò´ò¿ªµÄÎļþ´°¿ÚÊý£¬Èç¹û´æ´¢ÓòÒѾ­´ò¿ªÁËÔÊÐí´ò¿ªµÄËùÓÐÎļþ´°¿Ú£¬Ö±½Ó·µ»Ø³ö´í£»·ñÔò´Ó¿ÕÏÐÎļþ´°¿Ú¶ÓÁÐÖÐÒÆ³öÒ»¸öÎļþ´°¿Ú¿ØÖƿ飬²åÈëµ½´æ´¢ÓòµÄÎļþ´°¿Ú¶ÓÁÐÖУ¬¶Ô´æ´¢Óòµ±Ç°´ò¿ªµÄÎļþ´°¿ÚÊýÖ´ÐмÓÒ»²Ù×÷£¬ÉèÖÃÎļþ´°¿Ú¿ØÖÆ¿éÖеĸ÷¸öÓò£¨Îļþ·þÎñÆ÷µÄ±êʶ£¬¶ÔÓ¦µÄÍâ´æÉÏÎļþµÄ±êʶ£¬·ÃÎÊÎļþµÄȨÏÞ£¬Îļþ´°¿ÚµÄ´óСºÍÔÚÍâ´æÎļþÖеÄλÖ㬷ÃÎÊÎļþµÄCapabilityУÑéºÍ·ÃÎÊÎļþ´°¿ÚµÄCapabilityУÑ飬Îļþ´°¿Ú¿ØÖÆ¿éËùÊôµÄ´æ´¢Óò£©¡£ÎļþÒ³¿ò¶ÓÁÐÊ×Ö¸ÕëÉèÖÃΪ¿Õ¡£
Ö´ÐйرÕÎļþ´°¿Úµ÷ÓÃʱ£¬Ê×ÏÈÅжϵ±Ç°Ê¹ÓõÄÒ³¿òÊýÊÇ·ñΪÁ㣬Èç¹ûΪÁã°ÑÎļþ´°¿Ú¿ØÖÆ¿é´Ó´æ´¢ÓòµÄÎļþ´°¿Ú¶ÓÁÐÖÐɾ³ý£¬²åÈëµ½¿ÕÏÐÎļþ´°¿Ú¶ÓÁÐÖУ¬¶Ô´æ´¢Óòµ±Ç°´ò¿ªµÄÎļþ´°¿ÚÊýÖ´ÐмõÒ»²Ù×÷¡£
    Èç¹û´óÓÚÁ㣬Ê×ÏȶÔÎļþ´°¿ÚÖ´ÐÐFlush²Ù×÷£¬°ÑÄÚ´æÖÐÒѾ­Ð޸ĵÄÊý¾Ýд»Øµ½ÎļþÖУ¬È»ºóÖ´ÐдÓÎļþÒ³¿ò¶ÓÁеÄÁ´Ê׿ªÊ¼£¬Öظ´Ö´ÐÐÒÔϲÙ×÷£º
    ·Èç¹ûÒ³¿òµÄ״̬ΪÕýÔÚ¶Á»òÈç¹ûÒ³¿òµÄ״̬ΪÕýÔÚд£¬Ë¯Ãߵȴý¶ÁдÍê³É¡£»½ÐѺ󷵻ØÖØÐÂÖ´ÐйرÕÎļþ²Ù×÷¡£
    ·Èç¹ûÒ³¿òµÄ״̬ΪδÐ޸쬰ÑÒ³¿ò´ÓµØÖ·Ó³É䲿¼þÖÐɾ³ý£¬°ÑÒ³¿ò´ÓÎļþÒ³¿ò¶ÓÁкÍÒ³¿ò»º³å¶ÓÁÐÖÐɾ³ý£¬²åÈëµ½¿ÕÏÐÒ³¿ò¶ÓÁÐÖУ¬¶Ô´æ´¢ÓòµÄµ±Ç°Ê¹ÓõÄÒ³¿òÊýÖ´ÐмõÒ»²Ù×÷¡£
    ·Èç¹ûÒ³¿òµÄ״̬ΪÒÑÐ޸ģ¬ÖØÐ¶ÔÎļþ´°¿ÚÖ´ÐÐFlush²Ù×÷£¬·µ»ØÖØÐÂÖ´ÐÐÎļþ¹Ø±Õ²Ù×÷¡£
    ÔÚLFYOSÖУ¬Ö´Ðдò¿ªÎļþ´°¿Ú²Ù×÷£¬ÐèÒªÓµÓд洢ÓòCapabilityµÄУÑé»òÕßÓµÓÐϵͳCapabilityµÄУÑéÐÅÏ¢£»Ö´ÐйرÕÎļþ´°¿Ú²Ù×÷£¬ÐèÒªÓµÓзÃÎÊÎļþ´°¿ÚµÄCapabilityУÑé»òÕßÓµÓÐϵͳCapabilityµÄУÑéÐÅÏ¢¡£
    °ÑÎļþÊý¾Ý·´Ð´»ØÎļþFlushºÍ·ÃÎÊÎļþ²âÊÔTouch
    Ö´ÐÐFlushµ÷ÓÃʱ£¬Ê×ÏÈ´ÓÎļþ´°¿Ú¿ØÖÆ¿éÈ¡³öÎļþÒ³¿ò¶ÓÁеÄÊ×Ö¸Õ룬Ȼºó°´´Ó¶ÓÁÐÊײ¿µ½¶ÓÁÐβ²¿Ë³Ðò£¬¼ì²éÿ¸öÒ³¿òµÄ״̬£¬¶ÔÓÚ´¦ÓÚÒÑÐÞ¸Ä״̬µÄÒ³¿ò£¬°ÑÒ³¿ò¿ØÖÆ¿é´ÓÒ³¿ò»º³å¶ÓÁÐɾ³ý£¬ÉèÖÃÆä״̬ΪÕýÔÚд״̬£¬µ÷ÓÃÎļþ·þÎñÆ÷Ö´ÐÐдÎļþ²Ù×÷¡£
    Ö´ÐзÃÎÊÎļþ²âÊÔTouchµ÷ÓÃʱ£¬Ê×ÏȲéѯҳ±í£¨ºÍ¼ÆËã»úϵͳµÄÌåϵ½á¹¹Ïà¹ØµÄ£¬²»Í¬µÄµØÖ·Ó³Éä»úÖÆ²ÉÓò»Í¬µÄ²éѯ·½·¨£©£¬Èç¹û¶ÔÓ¦µÄÒ³±íÏîÔÚÒ³±íÖдæÔÚ£¬ËµÃ÷¸ÃÒ³ÒѾ­´ÓÎļþ·þÎñÆ÷ÖжÁÈëÄڴ棬¸ù¾ÝÒ³±íÏîÖеÄÐÅÏ¢ÖеÄÐÅÏ¢£¬¿ÉÒÔÈ·¶¨¶ÔÓ¦µÄÒ³¿ò¿ØÖƿ飬°ÑÒ³¿ò¿ØÖÆ¿éÒÆµ½Ò³¿ò»º³å¶ÓÁеĶÓÊ×£¬·µ»Ø·ÃÎÊÎļþ²âÊÔTouchµ÷Óõĸ÷ÏîÐÅÏ¢¡£
    Èç¹û¶ÔÓ¦µÄÒ³±íÏîÔÚÒ³±íÖв»´æÔÚ£¬ÄÇôÐèÒª´ÓÎļþ·þÎñÆ÷ÖжÁÈëÎļþÊý¾Ý¡£Ê×ÏÈ£¬±È½Ï´æ´¢ÓòÖеÄÁ½¸öÓò£ºÔÊÐíʹÓõÄ×î´óÒ³¿òÊýºÍµ±Ç°Ê¹ÓõÄÒ³¿òÊý£¬ÅжÏÊÇ·ñÔÊÐí¸Ã´æ´¢Óò¼ÌÐøÊ¹ÓÿÕÏÐÒ³¿ò£¬Èç¹ûûÓÐ×ã¹»µÄ¿ÕÏÐÒ³¿ò£¬Ö´ÐÐÒ³¿òÌÔÌ­Ëã·¨£¬°ÑÄÚ´æÖеÄÎļþÊý¾Ý·´Ð´»ØÎļþÖУ¬ÊÍ·ÅÕ¼ÓõÄÒ³¿ò¡£Ò³¿òÌÔÌ­Ëã·¨Ö´ÐÐÍê±Ïºó´æ´¢ÓòÒ²¾ÍÓµÓÐÁË×ã¹»µÄ¿ÕÏÐÒ³¿ò¡£
    Èç¹û´æÔÚ×ã¹»µÄ¿ÕÏÐÒ³¿ò£¬ÄÇô´Ó¿ÕÏÐÒ³¿ò¶ÓÁеĶÓÊ×ɾ³ýÒ»¸öÒ³¿ò¿ØÖƿ飬°ÑËü²åÈëµ½ÎļþÒ³¿ò¶ÓÁУ¬µ«²¢²»²åÈëÒ³¿ò»º³å¶ÓÁУ¬³õʼ»¯Ò³¿ò¿ØÖƿ飬״̬ÉèÖÃΪÕýÔÚ¶Á£¬Í¨¹ýÏß³ÌÇ¨ÒÆµ÷ÓÃÆô¶¯Îļþ·þÎñÆ÷Ö´ÐжÁÎļþ²Ù×÷¡£¶ÁÎļþ²Ù×÷Íê³Éºó£¬·µ»Ø·ÃÎÊÎļþ²âÊÔTouchµ÷Óõĸ÷ÏîÐÅÏ¢¡£

Ò³¿òÌÔÌ­Ëã·¨ÖØ¸´Ö´ÐÐÒÔϲÙ×÷£º

    ¸ù¾ÝÒ³¿ò»º³å¶ÓÁÐβ²¿µÄÒ³¿ò¿ØÖÆ¿éµÄ״̬£¬Ñ¡ÔñÖ´ÐУº
    ·Èç¹ûΪδÐÞ¸Ä״̬£º°Ñ¸ÃÒ³¿ò¿ØÖÆ¿é´ÓÎļþÒ³¿ò¶ÓÁкÍÒ³¿ò»º³å¶ÓÁÐɾ³ý£¬²åÈëµ½¿ÕÏÐÒ³¿ò¶ÓÁÐÖУ¬Í¬Ê±ÐÞ¸ÄÒ³±íÖиÃÒ³¿ò¿ØÖÆ¿é¶ÔÓ¦µÄÐÅÏ¢£¬¶Ô´æ´¢Óò¿ØÖÆ¿éÖе±Ç°Ê¹ÓõÄÒ³¿òÊýÖ´ÐмõÒ»²Ù×÷¡£
    ·Èç¹ûΪÒÑÐÞ¸Ä״̬£º°ÑÒ³¿ò¿ØÖÆ¿éÒ³¿ò»º³å¶ÓÁÐɾ³ý£¬ÉèÖÃÆä״̬ΪÕýÔÚд״̬£¬µ÷ÓÃÎļþ·þÎñÆ÷Ö´ÐÐдÎļþ²Ù×÷¡£
    ·ÆäËü״̬³ö´í¡£
    Ò³¿òÌÔÌ­Ëã·¨ÖØ¸´Ö´ÐУ¬Ö±µ½ÒÔÏÂÌõ¼þÖгÉÁ¢ÎªÖ¹£º´æ´¢Óò¿ØÖÆ¿éÖеĵ±Ç°¶àÉÙ¸öÒ³¿òÔÚÖ´ÐÐд²Ù×÷´óÓÚµÈÓÚ×î¶àͬʱд¶àÉÙ¸öÒ³¿ò£¬»òÕßµ±Ç°Ê¹ÓõÄÒ³¿òÊýСÓÚʹÓÃÁ˶àÉÙÒ³¿òÊýºó£¬Æô¶¯Ð´²Ù×÷°ÑÊý¾Ý·´Ð´»ØÎļþ¡£
    Ö´ÐаÑÎļþÊý¾Ý·´Ð´»ØÎļþFlushµ÷ÓúͷÃÎÊÎļþ²âÊÔTouchµ÷Óã¬ÐèÒªÓµÓзÃÎÊÎļþ´°¿ÚµÄCapabilityУÑé»òÕßÓµÓÐϵͳCapabilityµÄУÑéÐÅÏ¢¡£
    ÉèÖÃÎļþÊý¾ÝÒѾ­±»ÐÞ¸Ä
    ÔÚLFYOSÖУ¬ÎļþÊý¾Ý¶ÁÈëÒ³¿òÒÔºóÒ³¿ò´¦ÓÚδÐÞ¸Ä״̬£¬±íʾÌÔÌ­¸ÃÒ³¿òʱ²»ÐèҪд»Ø¸ÃÒ³¿òÖеÄÊý¾Ý£¬Èç¹ûÏß³ÌÐÞ¸ÄÁËÒ³¿òÖеÄÊý¾Ý£¬²Ù×÷ϵͳµÄÄں˽«Ê¹Ïß³ÌÇ¨ÒÆÖÁÄÚ´æ¹ÜÀíÆ÷£¬µ÷ÓÃÄÚ´æ¹ÜÀíÆ÷ÖеÄÉèÖÃÎļþÊý¾ÝÒѾ­±»Ð޸ŦÄÜ£¬¸Ã¹¦ÄܰÑÒ³¿òµÄ״̬ÐÞ¸ÄΪÒÑÐÞ¸Ä״̬£¬Òò´Ëµ±Ö´ÐÐÒ³¿òÌÔ̭ʱ£¬½«°Ñ¸ÃÒ³µÄÄÚ´æÐ´»ØÎļþÖС£
    ´æ´¢¹ÜÀíÆ÷Ö´Ðиù¦ÄÜʱ£¬Ê×Ïȼì²é²ÎÊý£¬¸ù¾Ýµ÷ÓòÎÊýµ÷ÓÃsearch_physical_block()º¯ÊýÈ·¶¨ÐèÒªÉèÖÃÐ޸ĵÄÒ³¿ò£¬°Ñ¸ÃÒ³¿òµÄ״̬¸ÄΪÒÑÐÞ¸Ä״̬¡£

·ÖÅäºÍ²éѯ´æ´¢×ÊÔ´

    ÔÚLFYOSÖУ¬´æ´¢×ÊÔ´°üÀ¨Îļþ´°¿ÚºÍÒ³¿ò¡£Ö´ÐзÖÅä´æ´¢×ÊÔ´µ÷ÓÃʱ£¬ÉèÖô洢Óò¿ØÖÆ¿éÖеÄÔÊÐí¸Ã´æ´¢Óò´ò¿ªµÄ×î´óÎļþ´°¿ÚÊýºÍÔÊÐí¸Ã´æ´¢ÓòʹÓõÄ×î´óÒ³¿òÊý£»Ö´Ðвéѯ´æ´¢×ÊÔ´µ÷ÓÃʱ£¬·µ»ØÔÊÐí¸Ã´æ´¢Óò´ò¿ªµÄ×î´óÎļþ´°¿ÚÊý¡¢µ±Ç°¸Ã´æ´¢Óò´ò¿ªµÄÎļþ´°¿ÚÊý¡¢ÔÊÐí¸Ã´æ´¢ÓòʹÓõÄ×î´óÒ³¿òÊý¡¢µ±Ç°¸Ã´æ´¢ÓòʹÓõÄÒ³¿òÊý¡£
    ÔÚLFYOSÖУ¬Ö»ÓÐÓµÓÐϵͳCapabilityµÄУÑ飬²ÅÄÜΪ´æ´¢Óò·ÖÅä×ÊÔ´£»Ö»ÒªÓµÓд洢ÓòCapabilityµÄУÑé»òÕßÓµÓÐϵͳCapabilityµÄУÑéÐÅÏ¢£¬¼´¿É²éѯ´æ´¢ÓòµÄ´æ´¢×ÊÔ´¡£

´æ´¢ÌåµÄ³õʼ»¯

    µ÷Óøù¦ÄÜʵÏÖ´æ´¢ÌåµÄ³õʼ»¯£¬³õʼ»¯ÄÚ´æ¹ÜÀíÆ÷Öеĸ÷¸öÊý¾Ý½á¹¹¡£


[Ŀ¼]


±à³ÌÊÖ²á

[Ŀ¼]


LFYOSÖÐÓ¦ÓóÌÐò±à³ÌÄ£ÐÍ

    ºÍ´«Í³²Ù×÷ϵͳÏà±È£¬LFYOS¾ßÓв»Í¬µÄÌåϵ½á¹¹£¬Òò´ËÒ²¾Í¾ßÓв»Í¬µÄ±à³ÌÄ£ÐÍ£¬ÆäºÍ´«Í³²Ù×÷ϵͳ×î´óµÄ²»Í¬¾ÍÊÇ£ºLFYOSʵÏÖÁ˵¥Ò»Êý¾Ý´æ´¢Ä£ÐÍ£¬ÊµÏÖÁËÊý¾Ý´æ´¢¡¢Êý¾Ý¼ÆËãºÍ×ÊÔ´¹ÜÀíµÄ·ÖÀë¡£

[Ŀ¼]


µ¥Ò»Êý¾Ý´æ´¢Ä£ÐÍ

    ÔÚLFYOSÖУ¬ËùÓеÄÊý¾Ý¶¼´æÔÚÓÚÎļþÖУ¬Ï߳̾Íͨ¹ýÐéÄâµØÖ·¿Õ¼äÖ±½Ó·ÃÎÊÎļþÊý¾Ý£¬ÄÚ´æµÄ×÷Óýö½öʵÏÖ¶ÔÎļþÊý¾ÝµÄ»º³å¡£µ±Ó¦ÓóÌÐò·ÃÎÊÎļþÊý¾Ýʱ£¬Èç¹ûÎļþÊý¾ÝÔÚÄÚ´æÖв»´æÔÚ£¬Ï߳̽«²úÉúÒ»¸öÒì³££¨´æ´¢·ÃÎÊʧЧÒì³££©£¬Òì³£´¦Àí³ÌÐòµ÷ÓÃÄÚ´æ¹ÜÀíÆ÷£¬ÄÚ´æ¹ÜÀíÆ÷·ÖÅäÒ³¿ò£¬ÔÙÇ¨ÒÆÖÁÎļþϵͳ½ø³Ì»òÕßµ÷ÓÃÇý¶¯³ÌÐòÖ´ÐÐÎļþÊý¾ÝµÄ¶Áд£¬µ±Ï̴߳ÓÎļþϵͳ»òÕßÇý¶¯³ÌÐò·µ»ØÄÚ´æ¹ÜÀíÆ÷ºó£¬ÄÚ´æ¹ÜÀíÆ÷½¨Á¢µØÖ·Ó³É䣬Òò´Ëµ±´ÓÄÚ´æ¹ÜÀíÆ÷·µ»Øºó£¬Ï߳̾ͿÉÒÔͨ¹ýÐéÄâµØÖ·¿Õ¼äÖ±½Ó·ÃÎÊÎļþÊý¾ÝÁË¡£

1.ÐéÄâµØÖ·¿Õ¼äºÍÎļþ´°¿ÚµÄ¶ÔÓ¦¹ØÏµ
    ÔÚÎÒÃǵ±Ç°µÄʵÏÖÖУ¬ÔÚ£´GµÄÐéÄâµØÖ·¿Õ¼ä£¨ÏßÐÔµØÖ·¿Õ¼ä£©ÖУ¬£°£­£³£Ç·Ö±ð¶ÔÓ¦Ï̵߳ÄÁù¸öÒѾ­´ò¿ªµÄÎļþ´°¿Ú£¬¸ß¶ËµÄÒ»¸öGÓɲÙ×÷ϵͳʹÓá£Èç¹ûÏß³ÌÔËÐÐÓÚºËÐÄ̬£¨£°Ì¬£©£¬Ïß³ÌÒ²¿ÉÒÔ·ÃÎʸ߶˵ÄÊý¾Ý£»Èç¹ûÏß³ÌÔËÐÐÓÚÓû§Ì¬£¨£³Ì¬£©£¬Ï߳̽ö½ö¿ÉÒÔ·ÃÎʸ߶˵IJÙ×÷ϵͳ´úÂ루¶ÁÈ¡»òÖ´ÐУ©£¬²»ÄÜ·ÃÎʲÙ×÷ϵͳÊý¾Ý¡£
    LDTûÓÐʹÓã¬ÔÚGDTÖУ¬½ö½ö°üº¬£²£°ÏîÄÚÈÝ¡£ÃèÊö·û0δÓã¬ÃèÊö·û0x08Ö¸ÏòÈÎÎñµÄtss£¬ÃèÊö·û0x10¡¢0x18Ö±½ÓÓ³Éäµ½4GµÄÏßÐÔµØÖ·¿Õ¼ä£¬Ö»ÄÜÔÚºËÐÄ̬ÏÂʹÓã¬ÃèÊö·û0x10ÓÃÓÚ¶ÁÈ¡ºÍÖ´ÐУ¬ÃèÊö·û0x18ÓÃÓÚ¶ÁÈ¡ºÍÐ޸ġ£
    ÃèÊö·û0x23¡¢0x2b¼°ÆäÒÔϵÄÃèÊö·ûÓÉÔËÐÐÓÚÓû§Ì¬µÄÓ¦ÓóÌÐòʹÓã¬ÃèÊö·û0x23Ó³ÉäÇøÓò´ÓÏßÐÔµØÖ·£°ÖÁ²Ù×÷ϵͳ´úÂëµÄÖÕÖ¹£¬Òò´Ëͨ¹ýÃèÊö·û0x23£¬Ó¦ÓóÌÐò¿ÉÒÔ¶ÁÈ¡ºÍÖ´ÐвÙ×÷ϵͳÄں˴úÂ룬µ«ÊDz»ÄÜÐ޸IJÙ×÷ϵͳÄں˴úÂ룬Ҳ²»ÄÜ·ÃÎʲÙ×÷ϵͳÊý¾Ý¡£ÃèÊö·û0x2bÓ³ÉäÇøÓò´ÓÏßÐÔµØÖ·£°¿ªÊ¼£¬³¤¶ÈΪ3G+8K£¬µÍ¶ËµÄ3G¶ÔÓ¦Áù¸öÎļþ´°¿Ú£¬Ã¿¸öÎļþ×î´ó³¤¶È´°¿ÚΪ512M£¬3G£­3G£«4KµÄÒ³ÃæÓÃÓÚÏò²Ù×÷ϵͳÄں˴«µÝ²ÎÊý¡£µ±Ï̵߳÷ÓÃÄÚºËÌṩµÄϵͳ¹¦Äܵ÷ÓÃʱ£¬Èç¹ûÐèÒª´«µÝµÄ²ÎÊýºÜ¶à£¬ÎÞ·¨È«²¿·ÅÔڼĴæÆ÷£¬Ôò°ÑÆäËüµÄ²ÎÊý·ÅÔÚ3G£­3G£«4KµÄÒ³ÃæÖС£3G£«4K£­3G£«£¸KµÄÒ³ÃæÓÉÎļþϵͳʹÓ㬵±ÄÚ´æ¹ÜÀíÆ÷ͨ¹ýÏß³ÌÇ¨ÒÆµ÷ÓÃÇëÇóÎļþϵͳִÐÐÎļþ¶Áдʱ£¬Îļþϵͳ²»ÐèÒªÖªµÀÊý¾ÝµÄ¾ßÌå´æ·ÅλÖã¬Ö»Ðè´ÓÇø¼ä3G£«4K£­3G£«8K¶Á»òÏòÇø¼ä3G£«4K£­3G£«£¸Kд¼´¿É¡£
    ÃèÊö·û0x033¡¢0x03b£¬ÃèÊö·û0x043¡¢0x04b£¬ÃèÊö·û0x053¡¢0x05b£¬ÃèÊö·û0x063¡¢0x06b£¬ÃèÊö·û0x073¡¢0x07b£¬ÃèÊö·û0x083¡¢0x08b·Ö±ð¶ÔÓ¦Áù¸öÎļþ´°¿Ú£¬ÃèÊö·û0x0X3ÓÃÓÚ¶ÁÈ¡ºÍÖ´ÐУ¬ÃèÊö·û0x0XbÓÃÓÚ¶ÁÈ¡ºÍÐ޸ġ£
ÃèÊö·û0x093¡¢ÃèÊö·û0x09b·Ö±ðÓ³ÉäÖÁÏßÐÔµØÖ·3G£­3G£«£¸KµÄÁ½¸öÒ³Ãæ¡£

2.ºÍÎļþÓйصö¸ÅÄî
    @´æ´¢Ì壺ÔÚÐ鵨ַ¿Õ¼ä»ùÓÚÎļþ²Ù×÷ϵͳÖУ¬°ÑÎïÀíµØÖ·¿Õ¼ä»®·ÖΪ¼¸¸ö´æ´¢Ì壬ÿ¸ö´æ´¢ÌåÓÉÒ»¸öÄÚ´æ¹ÜÀíÆ÷¸ºÔð¹ÜÀíºÍά»¤£¨ÄÚ´æ¹ÜÀíÆ÷ÊÇÒ»¸öÔÚºËÐÄ̬ÏÂÔËÐеijÌÐò£©£¬Ó¦ÓóÌÐò´ò¿ªÎļþ´°¿ÚʱÐèҪȷ¶¨ÔÚÄĸö´æ´¢ÌåÖдò¿ªÎļþ´°¿Ú£¬µ±·¢Éú´æ´¢·ÃÎÊʧЧÒ쳣ʱ£¬²Ù×÷ϵͳϵͳÄÚºËÀûÓô洢ÌåÐÅϢȷ¶¨Ïß³ÌÇ¨ÒÆµ½Äĸö½ø³Ì¡£
    @ϵͳÎļþ´°¿Ú£ºÄÚ´æ¹ÜÀíÆ÷¹ÜÀíºÍά»¤µÄÎļþ´°¿Ú¡£µ±´ò¿ªÎļþʱ£¬ÄÚ´æ¹ÜÀíÆ÷½¨Á¢ÏµÍ³Îļþ´°¿Ú¡£
    @Ïß³ÌÎļþ´°¿Ú£ºµ±Ïß³ÌÔËÐÐʱ£¬¶ÔÏ̶߳øÑÔ£¬GDTÖи÷¸ö¶ÎÃèÊö·û¶ÔÓ¦µÄÎļþ´°¿Ú
    @½ø³ÌÎļþ´°¿Ú£ºµ±Ïß³ÌÔËÐÐʱ£¬¶Ô½ø³Ì¶øÑÔ£¬GDTÖи÷¸ö¶ÎÃèÊö·û¶ÔÓ¦µÄÎļþ´°¿Ú¡£µ±Ï̷߳ÃÎʵØÖ·¿Õ¼äÖеÄÊý¾Ýʱ£¬Èç¹ûµ±Ç°½ø³ÌÉ趨Á˽ø³ÌÎļþ´°¿Ú£¬·ÃÎʽø³ÌÎļþ´°¿ÚÖеÄÊý¾Ý£¬·ñÔò·ÃÎÊÏß³ÌÎļþ´°¿ÚÖеÄÊý¾Ý¡£

3.ºÍÎļþ´°¿ÚÓйصöϵͳ¹¦Äܵ÷ÓÃ
    @ÉèÖýø³ÌÎļþ´°¿ÚµÄcapabilityУÑ飨21ºÅ¹¦ÄÜ£©£º¸Ãϵͳ¹¦Äܵ÷ÓÃÓÃÀ´½¨Á¢½ø³ÌÎļþ´°¿ÚºÍϵͳÎļþ´°¿ÚµÄ¶ÔÓ¦¹ØÏµ£¬Í¬Ê±ÉèÖýø³ÌÎļþ´°¿ÚµÄcapabilityУÑé¡£
    @ÉèÖÃÏß³ÌÎļþ´°¿ÚµÄcapabilityУÑ飨22ºÅ¹¦ÄÜ£©£º¸Ãϵͳ¹¦Äܵ÷ÓÃÓÃÀ´½¨Á¢Ïß³ÌÎļþ´°¿ÚºÍϵͳÎļþ´°¿ÚµÄ¶ÔÓ¦¹ØÏµ£¬Í¬Ê±ÉèÖÃÏß³ÌÎļþ´°¿ÚµÄcapabilityУÑé¡£
    @¼ì²éÏß³ÌÊÇ·ñ¿ÉÒÔ·ÃÎÊij¸öÎļþ´°¿Ú£ºÖ»Óнø³ÌÎļþ´°¿ÚµÄcapabilityУÑéºÍϵͳÎļþ´°¿ÚµÄcapabilityУÑéÏàͬ£¬»òÕßÏß³ÌÎļþ´°¿ÚµÄcapabilityУÑéºÍϵͳÎļþ´°¿ÚµÄcapabilityУÑéÏàͬ£¬Ó¦ÓóÌÐò²ÅÄÜ·ÃÎÊÏàÓ¦µÄϵͳÎļþ´°¿Ú¡£

4.½ø³ÌÎļþ´°¿ÚºÍϵͳÎļþ´°¿ÚµÄ¶ÔÓ¦¹ØÏµ£¬Ïß³ÌÎļþ´°¿ÚºÍϵͳÎļþ´°¿ÚµÄ¶ÔÓ¦¹ØÏµ£ºµ±Ó¦ÓóÌÐòÔÚϵͳÖÐÔËÐÐʱ£¬Èç¹û·ÃÎÊÐéÄâµØÖ·¿Õ¼ä¶ÔÓ¦µÄÎļþ´°¿Ú£¬ÏµÍ³Ê×ÏÈÅжÏÏàÓ¦µÄ½ø³ÌÎļþ´°¿ÚºÍϵͳÎļþ´°¿ÚµÄ¶ÔÓ¦¹ØÏµ£¬Åж϶þÕßµÄcapabilityÊÇ·ñÏàͬ£¬Èç¹ûÏàͬÔòÈÏΪӦÓóÌÐò·ÃÎʽø³ÌÎļþ´°¿Ú¶ÔÓ¦µÄϵͳÎļþ´°¿Ú£¬·ñÔòÅжÏÏàÓ¦µÄÏß³ÌÎļþ´°¿ÚºÍϵͳÎļþ´°¿ÚµÄ¶ÔÓ¦¹ØÏµ£¬Åж϶þÕßµÄcapabilityÊÇ·ñÏàͬ£¬Èç¹ûÏàͬÔòÈÏΪӦÓóÌÐò·ÃÎÊÏß³ÌÎļþ´°¿Ú¶ÔÓ¦µÄϵͳÎļþ´°¿Ú£¬·ñÔò˵Ã÷Ó¦ÓóÌÐò²»ÄÜ·ÃÎÊÐéÄâµØÖ·¿Õ¼ä¶ÔÓ¦µÄÎļþ´°¿Ú¡£

[Ŀ¼]


ʵÏÖÁËÊý¾Ý´æ´¢¡¢Êý¾Ý¼ÆËãºÍ×ÊÔ´¹ÜÀíµÄ·ÖÀë

    ÔÚLFYOSÖУ¬Êý¾Ý´æ´¢ÓÉÎļþ³éÏóʵÏÖ£¬Êý¾Ý¼ÆËãÓÉÏ̳߳éÏóʵÏÖ£¬×ÊÔ´¹ÜÀíÓɽø³Ì³éÏóʵÏÖ£¬ÈýÕßÔÚϵͳÖÐÊÇ·ÖÀëµÄ£¬±íÏÖÔÚÒÔÏÂÈý¸ö·½Ã棺

1.Ï̺߳ÍÎļþÖ®¼ä²»´æÔÚÈκÎÈ·¶¨µÄ¶ÔÓ¦¹ØÏµ£ºÊý¾Ý´æ´¢ÔÚÎļþÖУ¬Ö»Òª²»Ó°Ï찲ȫÐÔ£¬ÈκÎÎļþ¿ÉÒÔ±»ÈκÎÏ̷߳ÃÎÊ£¬ÈκÎÏß³ÌÒ²¶¼¿ÉÒÔ¼ÆËãÈκÎÎļþÖеÄÊý¾Ý¡£

2.Ï̺߳ͽø³ÌÖ®¼äÒ²²»´æÔÚÈ·¶¨µÄ¶ÔÓ¦¹ØÏµ£ºÏ߳̿ÉÒÔÔÚ²»Í¬µÄ½ø³ÌÖ®¼äÇ¨ÒÆ£¬ÔÚ²»Í¬Ê±¿ÌÏß³ÌÒÔ²»Í¬½ø³ÌµÄÉí·ÝÉêÇëºÍʹÓÃ×ÊÔ´¡£ÓÉÓÚËùÓÐÓ¦ÓóÌÐòÔÚͬһ¸öÎļþ¿Õ¼äÖÐÔËÐУ¬Ïß³ÌÇ¨ÒÆÊ±£¬½ö½öÐèÒªÖ´ÐÐCPUÏÖ³¡µÄÇ¨ÒÆ£¬²»ÐèÒªÖ´ÐгÌÐò´úÂë¡¢Êý¾ÝºÍ¶ÑÕ»µÈµÄÇ¨ÒÆ¡£

3.ÎļþºÍ½ø³ÌÖ®¼äÒ²²»´æÔÚÈ·¶¨µÄ¶ÔÓ¦¹ØÏµ£ºÎļþÊôÓÚÎļþ·þÎñÆ÷£¬ÊÇÎļþ·þÎñÆ÷ά»¤µÄÒ»¸ö¶ÔÏ󣬽ø³ÌÊÇϵͳ½øÐÐ×ÊÔ´¹ÜÀíµÄ¶ÔÏó£¬ÊDzÙ×÷ϵͳÄÚºËʵʩ×ÊÔ´¹ÜÀíµÄ³éÏó£¬ÊÇϵͳ×ÊÔ´µÄ³ÖÓÐÕß¡£

[Ŀ¼]


Ó¦ÓóÌÐòÖ®¼äµÄÒÀÀµ¹ØÏµ

    ÔÚLFYOSÖУ¬µ±Ó¦ÓóÌÐòÔËÐÐʱ£¬Èç¹ûÎļþÊý¾ÝÔÚÎïÀíÄÚ´æÖв»´æÔÚ£¬Ïß³ÌÇëÇóÎļþ·þÎñÆ÷Ö´ÐжÁдÎļþ²Ù×÷£¬Ö´ÐÐÍê±ÏºóÏ̼߳ÌÐøÔËÐС£Ò»¸öÓ¦ÓóÌÐòµÄÔËÐУ¬ÐèÒªÆäËüµÄÓ¦ÓóÌÐò£¨Îļþ·þÎñÆ÷£©ÔÚºǫ́µÄÖ§³Ö£¬¶ø¸ÃÎļþ·þÎñÆ÷ÓÖ¿ÉÄÜÐèÒªÆäËüµÄÎļþ·þÎñÆ÷ÔÚºǫ́µÄÖ§³Ö¡£Èç¹ûÎļþ·þÎñÆ÷ÎÞ·¨ÔËÐУ¬Ïß³ÌÔÚµ±Ç°Ó¦ÓóÌÐòÖоÍÎÞ·¨ÔËÐУ¬Òò´ËËùνÐéÄâµØÖ·¿Õ¼ä»ùÓÚÎļþ£¬Ò²¿ÉÒÔ˵¾ÍÊÇÒ»¸öÓ¦ÓóÌÐòÖ´ÐеijÌÐòºÍ·ÃÎʵÄÊý¾Ý£¬ÊÇÓÉÁíÒ»¸öÓ¦ÓóÌÐòΪÆäά»¤µÄ£¬Ò»¸öÓ¦ÓóÌÐòµÄÔËÐУ¬ÐèÒªÒÀÀµÓÚÆäËüÓ¦ÓóÌÐòµÄÔËÐУ¬Òò´ËÔÚ¸÷¸öÓ¦ÓóÌÐòÖ®¼ä±ØÈ»´æÔÚÒ»¸öÏ໥֮¼äµÄÒÀÀµ¹ØÏµ£¬²¢×îÖÕËùÓÐÓ¦ÓóÌÐòÒÀÀµÓÚ´«Í³ÒâÒåϵÄÎļþϵͳ¡£
    ÔÚLFYOSÖУ¬Ó¦ÓóÌÐòÖ®¼ä´æÔÚÏ໥ÒÀÀµ¹ØÏµ£¬ÄÇôËùÓÐÓ¦ÓóÌÐò×îÖÕÒÀÀµµÄÊÇÄĸöÓ¦ÓóÌÐò£¿¸ÃÓ¦ÓóÌÐòÊÇÈçºÎÔËÐеģ¿ËüÊÇ·ñÒ²ÒÀÀµÓÚij¸öÓ¦ÓóÌÐòÄØ£¿
    ¾ÍÏóÔÚUNIXÖбØÐë´æÔÚ0#½ø³ÌÒ»Ñù£¬ÔÚLFYOSÖУ¬±ØÐëÖÁÉÙ´æÔÚÒ»¸öÎļþ·þÎñÆ÷Ö±½ÓÔÚÎïÀíÄÚ´æÉÏÔËÐжø²»ÒÀÀµÆäËüÈκηþÎñÆ÷¡£³£×¤ÄÚ´æµÄÎļþ·þÎñÆ÷¿ÉÒÔÊÇÒ»¸ö¾ßÌåµÄÎļþ·þÎñÆ÷£¬Ò²¿ÉÒÔÊÇÐéÄâÎļþ·þÎñÆ÷¡£
    Èç¹û³£×¤ÄÚ´æµÄÎļþ·þÎñÆ÷ÊÇÒ»¸ö¾ßÌåµÄÎļþ·þÎñÆ÷£¬ÀýÈç¹ÜÀíÓ²ÅÌ¡¢ÈíÅÌ»òÕß¹âÅ̵ȵÄÎļþ·þÎñÆ÷£¬ÄÇôËùÓеÄÓ¦ÓóÌÐò×îÖÕ¶¼½«ÒÀÀµÓÚÕâ¸ö³£×¤ÄÚ´æµÄÎļþ·þÎñÆ÷£¬Èç¹û³£×¤ÄÚ´æµÄÎļþ·þÎñÆ÷ÏûÍö£¬¾ÍÏó´«Í³²Ù×÷ϵͳÖжԻ»É豸Ëð»µÒ»Ñù£¬Õû¸öϵͳҲ½«²»ÄÜÔËÐУ¬Òò´ËÒªÇóϵͳÖÁÉÙ´æÔÚÒ»¸ö¾ßÌåµÄÍⲿ´æ´¢É豸£¬Í¬Ê±³£×¤Õâ¸öÉ豸µÄÎļþ·þÎñÆ÷¡£
    Èç¹û³£×¤ÄÚ´æµÄ·þÎñÆ÷ÊÇÒ»¸öÐéÄâÎļþ·þÎñÆ÷£¬ÀýÈçͨÐÅ·þÎñÆ÷£¬ÄÇôϵͳ¿ÉÄܲ»ÐèÒªÈκÎÍⲿ´æ´¢É豸£¬¶øÊÇÀûÓÃͨÐÅ·þÎñÆ÷ÔÚÔ¶³ÌµÄÎļþ·þÎñÆ÷ÉÏ´æÈ¡Êý¾Ý£¬ÔÚÕâÖÖÇé¿öÏ£¬ÒªÇóͨÐÅ·þÎñÆ÷Ö±½Ó³£×¤ÄÚ´æ¶ø²»ÒÀÀµÓÚÈÎºÎÆäËüµÄÓ¦ÓóÌÐò¡£

    ×ÜÖ®£¬ÔÚϵͳÄÚ´æÖÐÖÁÉÙÐèÒª³£×¤ÒÔÏÂÈý¸ö²¿¼þ£¬ÆäËüµÄÄÚÈÝ¿ÉÒÔÔÚϵͳÔËÐÐʱ¶¯Ì¬µØ°²×°ºÍÐ¶ÔØ£¬¿ÉÒÔÔÚϵͳÔËÐÐʱ¶¯Ì¬µØ»»Èë»»³ö£º
1.ÄÚºË
2.ÄÚ´æ¹ÜÀíÆ÷
3.ÖÁÉÙÒ»¸ö¾ßÌåµÄÎļþ·þÎñÆ÷»òÕßÒ»¸öͨÐÅ·þÎñÆ÷

[Ŀ¼]


ÄÚºËÌṩµÄϵͳ¹¦Äܵ÷ÓÃ

[Ŀ¼]


²ÎÊý´«µÝ

    Ïß³ÌÇëÇóÄÚºËÖ´ÐÐϵͳ¹¦Äܵ÷ÓÃʱ£¬Í¨¹ý¼Ä´æÆ÷´«µÝ²ÎÊý£¬Èç¹ûÐèÒª´«µÝµÄ²ÎÊýºÜ¶à£¬ÎÞ·¨È«²¿·ÅÔڼĴæÆ÷ÖУ¬ÆäËü²ÎÊý´æ·ÅÏßÐÔµØÖ·¿Õ¼äµÄ3G£­3G£«4KµÄÒ³Ãæ¡£ÔÚÒÔºóµÄʵÏÖÖУ¬¿ÉÄܰѲÎÊýÇø·ÖÅäÔÚÆäËüµØÖ·£¬ÎªÁËʵÏÖ¼æÈÝ£¬¿ÉÒÔͨ¹ýÒÔÏÂÈý¸öºêÈ¡µÃ²ÎÊýÇøµØÖ·£º
    get_kernel_parameter() ¶¨ÒåΪָÏòÁªºÏunion system_call_parameterµÄÖ¸Õ룬ÓÃÓÚÏòÄں˴«µÝ²ÎÊý¡£ÆäֵΪ3G¡£
    get_memory_parameter()¶¨ÒåΪָÏòÁªºÏunion memory_call_parameterµÄÖ¸Õ룬ÓÃÓÚÏòÄÚ´æ¹ÜÀíÆ÷´«µÝ²ÎÊý¡£ÆäֵΪ3G¡£
    get_file_system_parameter()¶¨ÒåΪָÏò½á¹¹struct file_system_call_parameterµÄÖ¸Õ룬ÓÃÓÚÏòÎļþϵͳ½ø³Ì´«µÝ²ÎÊý¡£ÆäֵΪ3G¡£
    get_thread_physical_block()¶¨ÒåΪָÏò×Ö·ûÖ¸Õ룬µ±ÄÚ´æ¹ÜÀíÆ÷ÇëÇóÎļþϵͳ¶ÁдÎļþʱ£¬Îļþϵͳ´Ó´Ë´¦¶ÁÈ¡Êý¾Ý£¬»òÏò´Ë´¦´æ·ÅÊý¾Ý¡£ÆäֵΪ3G£«4K¡£
    ΪÁËÔÚCÓïÑÔÖе÷ÓÃÄÚºËÌṩϵͳ¹¦Äܵ÷Óã¬ÎÒÃDZàÖÆÁËÒ»¶ÎÓÃÄÚǶ»ã±àʵÏÖµÄCº¯Êý£¬¸Ã³ÌÐò½ÓÊÕCÓïÑÔ´«Ë͵ÄÒ»¸ö½á¹¹Ö¸Õ루struct thread_environment¡¡£ª£©£¬°Ñ¸ÃÖ¸ÕëÖ¸ÏòµÄÊý¾Ý×°Èë¼Ä´æÆ÷ÖУ¬È»ºóµ÷ÓÃÄںˣ¬²¢°Ñ·µ»Øºó¸÷¸ö¼Ä´æÆ÷ÖеÄÖµ±£´æµ½Ö¸ÕëÖ¸ÏòµÄÊý¾Ý½á¹¹ÖС£¸Ãº¯ÊýÊÇÒ»¸ö¾²Ì¬µÄinlineº¯Êý£¬ÆäÔ­ÐÍΪ£º

void call_kernel(struct thread_environment *env)£»

    ÆäÖУ¬Êý¾Ý½á¹¹struct thread_environment µÄ¶¨ÒåΪ£º

struct thread_environment{
        int system_call,system_call_arg1;                    /*ax,bx*/
        int system_call_arg2,system_call_arg3;                /*cx,dx*/
        int system_call_arg4,system_call_arg5;                /*si,di*/
        int system_call_arg6,system_call_arg7;                /*bp,r7*/
        run_point point;                                                /*ip,cs,flag,sp,ss */
        int (*function)(int thread_id,struct thread *t,
                struct return_stack *rt,struct thread_environment *env,
                union kernel_call_parameter *parameter);
        union kernel_call_parameter parameter;
};
#define         ax        system_call
#define         bx        system_call_arg1
#define         cx        system_call_arg2
#define         dx        system_call_arg3
#define         si        system_call_arg4
#define         di        system_call_arg5
#define         bp        system_call_arg6
#define         r7        system_call_arg7
typedef struct thread_environment REG;

    º¯Êývoid call_kernel(struct thread_environment *env)µÄ¶¨ÒåΪ£¨ÍêÈ«ÓÃÄÚǶ»ã±àʵÏÖ£©£º

extern void call_kernel(struct thread_environment *env)£»


[Ŀ¼]


ϵͳ¹¦Äܵ÷ÓõÄÀý×Ó

1.        ½ö½öͨ¹ý¼Ä´æÆ÷´«µÝ²ÎÊý£º
#include¡±../include/os.h¡±
{
        REG r;
r.ax=0;
r.bx=2;
call_kernel(&r);
/*µ÷ÓÃÄں˵Ä0ºÅ¹¦ÄÜ£¬Ö´ÐÐÏß³ÌÇ¨ÒÆ£¬Ïß³ÌÇ¨ÒÆÖÁ2ºÅ½ø³Ì£© */
}


2.        ͨ¹ý¼Ä´æÆ÷´«µÝ²ÎÊý£¬Ò²Í¨¹ýÄں˲ÎÊýÇø´«µÝ²ÎÊýµÄÀý×Ó
#include¡±../include/os.h¡±
{
REG r;
union system_call_parameter *par;
par=get_kernel_parameter();
r.ax=22;
r.bx=0;
r.cx=0;
r.dx=0;
r.si=512;
r.di=READ_WRITE;
RESET_CAPABILITY(par->capability.capability_1); /*ÉèÖòÎÊýÇøÖеIJÎÊý*£¯
call_kernel(&r);
£ý


[Ŀ¼]


ÄÚºËÖÐϵͳ¹¦Äܵ÷Óõĸñʽ

[Ŀ¼]


Ïß³ÌÇ¨ÒÆºÍÏ̷߳µ»Ø

0ºÅ¹¦ÄÜ

    1.¹¦ÄÜ£ºÊµÏÖÏ̴߳ÓÒ»¸ö½ø³ÌÇ¨ÒÆµ½ÁíÒ»¸ö½ø³Ì£¬Ïß³ÌÔÚÄ¿±ê½ø³ÌÖдӽø³ÌµÄ³õʼִÐе㿪ʼÔËÐС£Í¨¹ýÏ̷߳µ»ØÏµÍ³¹¦Äܵ÷Óã¬Ï߳̿ÉÒÔ·µ»ØÔ­À´µÄ½ø³ÌÖС£
    2.¸ñʽ£ºax.¼Ä´æÆ÷µÄֵΪÁ㣬bx¼Ä´æÆ÷µÄ¾ø¶ÔֵΪ½ø³ÌID¡£
Èç¹ûµ±Ç°µÄ½ø³ÌΪ¹Ü³Ì£¬bx>0±íʾÏß³ÌÀ뿪µ±Ç°½ø³Ì½øÈëÄ¿±ê½ø³Ìºó£¬ÔÊÐíÆäËüÏ߳̽øÈ뵱ǰ½ø³Ì£»bx <0±íʾ¼´Ê¹Ïß³ÌÇ¨ÒÆÀ뿪µ±Ç°½ø³Ì½øÈëÄ¿±ê½ø³Ì£¬Ò²²»ÔÊÐíÆäËüÏ߳̽øÈ뵱ǰ½ø³Ì£¬Òò´Ëµ±Ï̴߳ÓÄ¿±ê½ø³Ì·µ»Øºó£¬¿ÉÒÔ±£Ö¤Êý¾ÝµÄÒ»ÖÂÐÔ£»bx£½0Ϊ·Ç·¨¡£
    3.·µ»ØÖµ£ºÈç¹ûax.¼Ä´æÆ÷µÄֵСÓÚÁ㣬±íʾʧ°Ü£»·ñÔò£¬ax.¼Ä´æÆ÷µÄֵΪͬʱ·µ»ØÁ˼¸´Î£¬Òò´ËÈç¹û´óÓÚÁãÒ²±íʾʧ°Ü£»bx.¼Ä´æÆ÷µÄֵΪTRUE±íʾÕý³£·µ»Ø£¬ÎªFALSE±íʾÒì³£·µ»Ø£¨ÀýÈ磬Ïß³ÌÔÚÄ¿±ê½ø³ÌÖÐÔËÐÐʱ·¢ÉúÁ˲»¿É»Ö¸´µÄÒì³£¶ø·µ»Ø£©¡£
    4.Àý£º

#include¡±../include/os.h¡±
{
    REG r;
    r.ax=0;
    r.bx=2;
        /*Ç¨ÒÆÖÁ£²ºÅ½ø³Ì£¬´ÓÆä³õʼִÐе㿪ʼÔËÐÐÏß³ÌÀ뿪µ±Ç°½ø³Ì½øÈëÄ¿±ê½ø³Ìºó£¬ÔÊÐíÆäËüÏ߳̽øÈ뵱ǰ½ø³Ì¡£*£¯
    call_kernel(&r);
}

1ºÅ¹¦ÄÜ
    1.¹¦ÄÜ£ºÊµÏÖÏ̴߳ÓÒ»¸ö½ø³ÌÇ¨ÒÆµ½ÁíÒ»¸ö½ø³Ì£¬Ïß³ÌÔÚÄ¿±ê½ø³ÌÖдӽø³ÌµÄ³õʼִÐе㿪ʼÔËÐУ¬ºÍ0ºÅ¹¦Äܲ»Í¬µÄÊÇ£ºÏ̲߳»ÄÜÔٴηµ»Øµ½Ô­À´µÄ½ø³ÌÖС£
    2.¸ñʽ£ºax.¼Ä´æÆ÷µÄֵΪ1£¬bx¼Ä´æÆ÷µÄ¾ø¶ÔֵΪ½ø³ÌID¡£
Èç¹ûµ±Ç°µÄ½ø³ÌΪ¹Ü³Ì£¬bx>0±íʾÏß³ÌÀ뿪µ±Ç°½ø³Ì½øÈëÄ¿±ê½ø³Ìºó£¬ÔÊÐíÆäËüÏ߳̽øÈ뵱ǰ½ø³Ì£»bx <0±íʾ¼´Ê¹Ïß³ÌÇ¨ÒÆÀ뿪µ±Ç°½ø³Ì½øÈëÄ¿±ê½ø³Ì£¬Ò²²»ÔÊÐíÆäËüÏ߳̽øÈ뵱ǰ½ø³Ì¡£Ö»ÓжԵ±Ç°½ø³ÌµÄ¹Ü³ÌÐźÅÁ¿Ö´ÐÐV²Ù×÷£¬²ÅÄÜÔÊÐíÆäËüÏ߳̽øÈ뵱ǰ½ø³Ì£»bx£½0Ϊ·Ç·¨¡£
    3.·µ»ØÖµ£ºÈç¹ûÖ´Ðгɹ¦£¬Ï̲߳»¿ÉÄÜ·µ»Ø£¬·µ»ØÔò±íʾʧ°Ü¡£
    4.Àý£º

#include¡±../include/os.h¡±
{
    REG r;
    r.ax=1;
    r.bx=(-2);
        /*Ç¨ÒÆÖÁ£²ºÅ½ø³Ì£¬´ÓÆä³õʼִÐе㿪ʼÔËÐÐÏß³ÌÀ뿪µ±Ç°½ø³Ì½øÈëÄ¿±ê½ø³Ìºó£¬²»ÔÊÐíÆäËüÏ߳̽øÈ뵱ǰ½ø³Ì¡£*£¯
    call_kernel(&r);
}

2ºÅ¹¦ÄÜ
    1.¹¦ÄÜ£ºÏß³ÌÇ¨ÒÆ£¨ÐÞ¸ÄÏ߳̿ÉÒÔ·ÃÎʵÄÎïÀíÒ³¿ò£©¡£
    2.¸ñʽ£ºax.¼Ä´æÆ÷µÄֵΪ2
        cx¼Ä´æÆ÷´æ·Å´æ´¢ÌåID£¬dx¼Ä´æÆ÷´æ·Å²ÎÊýÒ³¿òID£¬si¼Ä´æÆ÷´æ·ÅÏ߳̿ÉÒÔÖ±½Ó·ÃÎʵÄÎïÀíÒ³¿òID£¬ÆäËü²ÎÊýºÍ¸ñʽͬ0ºÅ¹¦ÄÜ¡£
    3.·µ»ØÖµ£ºÍ¬0ºÅ¹¦ÄÜ

3ºÅ¹¦ÄÜ
    1.¹¦ÄÜ£ºÊµÏÖÏ̴߳ӵ±Ç°µÄ½ø³Ì·µ»Øµ½Ô­À´µÄ½ø³Ì£¬Èç¹ûÏß³ÌÒѾ­Ã»Óнø³Ì¿ÉÒÔ·µ»Ø£¬ÔòÏß³ÌÖÕÖ¹Í˳ö¡£
    2.¸ñʽ£ºax.¼Ä´æÆ÷µÄֵΪ3£¬bx¼Ä´æÆ÷µÄֵΪTRUE±íʾÕý³£·µ»Ø£¬·ñÔòΪÒì³£·µ»Ø¡£Èç¹ûÏß³ÌÓÉÓÚÒì³£½øÈ뵱ǰµÄ½ø³Ì£¬Òì³£·µ»Ø±íʾÒýÆðÏß³ÌÔËÐÐÒì³£µÄÔ­ÒòûÓнâ¾ö£¬Òò´ËÄں˽«Ê¹Ïß³ÌÔٴηµ»Ø£¬Ö±ÖÁÏ߳̿ÉÒÔÕý³£ÔËÐÐΪֹ¡£Õâ¾ÍÊÇΪʲôִÐÐÒ»´ÎÏ̷߳µ»Øµ÷ÓûáÒýÆð¶à´ÎÏ̷߳µ»ØµÄÔ­Òò£¬¶ø0ºÅ¹¦Äܵķµ»ØÖµµ±Æä´óÓÚµÈÓÚÁãʱ¼´ÎªÏ̷߳µ»ØµÄ´ÎÊý¡£
    3.·µ»ØÖµ£º²»¿ÉÄÜ·µ»Ø
    4.Àý£º

#include¡±../include/os.h¡±
{
    REG r;
    r.ax=3;
    r.bx=TRUE;
    call_kernel(&r);
}

    ÔÚ´«Í³²Ù×÷ϵͳÖУ¬Ï߳̽øÈëÄÚºËʱ£¬½«´ÓÒ»¸ö¹Ì¶¨µÄµØÖ·¿ªÊ¼Ö´ÐУ¬Óë´ËÀàËÆ£¬ÔÚÐ鵨ַ¿Õ¼ä»ùÓÚÎļþ²Ù×÷ϵͳÖУ¬µ±Ï̴߳ÓÒ»¸ö½ø³Ì½øÈëÁíÒ»¸ö½ø³Ìʱ£¬Ï̴߳ÓÄ¿±ê½ø³ÌµÄ³õʼִÐе㿪ʼִÐС£Í¨¹ýÉèÖýø³ÌµÄ³õʼִÐе㣬¿ÉÒÔÖ¸¶¨Ïß³ÌÔÚ½ø³ÌÖпªÊ¼Ö´ÐеĵØÖ·¡£
µ±Ïß³ÌÔÚÄ¿±ê½ø³ÌÖпªÊ¼Ö´ÐÐʱ£¬ax¼Ä´æÆ÷´æ·Åµ±Ç°Ï̷߳µ»ØÕ»µÄÕ»¶¥Ö¸Õ룬ͨ¹ý¸Ã²ÎÊý£¬Ï߳̿ÉÒÔÅжÏÊÇ·ñ¿ÉÒÔÔÙ´ÎÖ´ÐÐÏß³ÌÇ¨ÒÆ£¬Ç¨ÒƵ½ÆäËüµÄ½ø³Ì¡£
    bx¼Ä´æÆ÷µÄ¾ø¶ÔÖµ´æ·Å×ŵ±Ç°Ï̵߳ÄID£¬Ò²¾ÍÊǵ±Ç°Ï̵߳ıêÖ¾ÐźÅÁ¿ID£¬¸ÃÐźÅÁ¿ºÍµ±Ç°µÄ½ø³Ì¾ßÓÐÏàͬµÄcapabilityУÑé¡£Èç¹ûbx>0£¬±íʾÏß³Ìͨ¹ýµ÷ÓÃÏß³ÌÇ¨ÒÆÏµÍ³¹¦Äܵ÷ÓýøÈ뵱ǰ½ø³Ì£¬Èç¹ûbx<0£¬±íʾÏ̲߳¢Ã»Óе÷ÓÃÏß³ÌÇ¨ÒÆÏµÍ³¹¦Äܵ÷Ó㬵«ÊÇÏß³ÌÖ´ÐÐʱ²úÉúÁËÒì³££¬ÄÚºËÖеÄÒì³£´¦Àí³ÌÐòʹÏß³ÌÇ¨ÒÆµ½µ±Ç°µÄ½ø³Ì£¬ÇëÇó½ø³ÌÖ´ÐÐÒì³£´¦Àí¡£
    Èç¹ûµ±Ç°µÄ½ø³Ì³É¹¦½â¾öÁËÒì³££¨ÀýÈ磬ÄÚ´æ¹ÜÀíÆ÷³É¹¦°ÑÒ³Ãæµ÷ÈëÄÚ´æ´Ó¶ø½â¾öÁË´æ´¢·ÃÎÊʧЧÒì³££©£¬Ö´ÐÐÏ̷߳µ»ØÊ±£¬bxÖеÄֵΪTRUE£¬Ï̷߳µ»Øµ½Ô­À´µÄ½ø³ÌÖмÌÐøÔËÐУ»Èç¹ûµ±Ç°µÄ½ø³ÌÎÞ·¨³É¹¦½â¾öÁËÒì³££¬±íʾÏß³ÌÔÚÔ­À´µÄ½ø³ÌÖÐÒÑÎÞ·¨ÔËÐУ¬Ö´ÐÐÏ̷߳µ»ØÊ±£¬bxÖеÄֵΪFALSE£¬ƒÈºË½«Ö´Ðжà´ÎÏ̷߳µ»Ø£¬Ö±µ½Ïß³ÌÄܹ»ÕýÈ·Ö´ÐÐΪֹ¡£
    ͨ¹ýÏß³ÌÇ¨ÒÆºÍÏ̷߳µ»Ø´¦ÀíÒì³££¬¼´Ê¹Ïß³ÌÔËÐÐʱ³öÏÖ²»Äܽâ¾öµÄÒì³££¬½ö½öʹÏ̷߳µ»Øµ½Ô­À´µÄ½ø³ÌÖУ¬²»»áʹÏ̻߳ò½ø³ÌÍêÈ«Í˳ö£¬½â¾öÁËUNIXϵͳÖеÄcore dumpÎÊÌâ¡£

[Ŀ¼]


¶ÔÐźÅÁ¿Ö´ÐÐP¡¢V²Ù×÷

    ÔÚÐ鵨ַ¿Õ¼ä»ùÓÚÎļþ²Ù×÷ϵͳÖУ¬ÀûÓÃÏß³ÌÇ¨ÒÆÊµÏÖÁËÏ̺߳ͽø³ÌµÄ·ÖÀ룬ͨ¹ýÏß³ÌÇ¨ÒÆÊµÏÖÒì³£´¦Àí¡£Ïß³ÌÔÚ½ø³ÌÖпÉÒÔʹÓÃÏ̵߳ıêÖ¾ÐźÅÁ¿£¬Í¨¹ý¶ÔÆäÖ´ÐÐP¡¢V²Ù×÷£¬ÊµÏÖÏß³ÌÖ®¼äµÄͬ²½»¥³â¡£

4ºÅ¹¦ÄÜ
    1.¹¦ÄÜ£º¶ÔÐźÅÁ¿Ö´ÐÐP¡¢V²Ù×÷£¬ÊµÏÖÏß³ÌÖ®¼äµÄͬ²½»¥³â¡£
    2.¸ñʽ£ºax.¼Ä´æÆ÷µÄֵΪ4
        bxÖÐΪִÐÐV²Ù×÷µÄÐźÅÁ¿IDµÄ¾ø¶ÔÖµ£¬Èç¹ûbx=0£¬²»Ö´ÐÐV²Ù×÷£»Èç¹ûbx<0£¬ÔòÖ´ÐÐV²Ù×÷ÒÔǰ¶Ô¸ÃÐźÅÁ¿¸´Î»¡£cxÖÐΪִÐÐV²Ù×÷ʱÐźÅÁ¿µÄÔö¼ÓÖµ£¬Èç¹ûcxÖеÄÖµ´óÓÚµÈÓÚÁ㣬°ÑÐźÅÔö¼ÓÏàÓ¦µÄÊýÖµ£¬Èç¹û±ØÒª»½ÐÑÔÚÐźÅÁ¿Ë¯ÃßµÄỊ̈߳»Èç¹ûcxÖеÄֵСÓÚÁ㣬Ôò°ÑÔÚÐźÅÁ¿Ë¯ÃßµÄÏß³ÌÈ«²¿»½ÐÑ¡£
        dxÖÐΪִÐÐP²Ù×÷µÄÐźÅÁ¿IDµÄ¾ø¶ÔÖµ£¬Èç¹ûdx=0£¬²»Ö´ÐÐP²Ù×÷£»Èç¹ûdx<0£¬ÔòÖ´ÐÐP²Ù×÷ÒÔǰ¶Ô¸ÃÐźÅÁ¿¸´Î»¡£si¼Ä´æÆ÷ÖеÄÖµÖ¸¶¨µ±ÐźÅÁ¿µÄֵСÓÚ0ʱÏß³ÌÊÇ·ñ˯Ãߣ¬si¼Ä´æÆ÷ÖеÄֵΪTRUE£¬Ôò˯Ãߣ¬Èç¹ûΪFALSE£¬²»Ë¯Ãߣ¬di¼Ä´æÆ÷ÖеÄÖµÖ¸¶¨µ±Ïß³Ì˯Ãßʱ£¬ÊÇ·ñÔÊÐíÆäËüÏ߳̽øÈë½ø³Ì£¬Èç¹ûdi¼Ä´æÆ÷ÖеÄֵΪTRUE£¬ÔÊÐíÆäËüÏ߳̽øÈë½ø³Ì£»Èç¹ûdi¼Ä´æÆ÷ÖеÄֵΪFALSE£¬²»ÔÊÐíÆäËüÏ߳̽øÈë½ø³Ì¡£
        ÔÚ²ÎÊýÇøÖУ¬get_kernel_parameter()->capability.capability_1´æ·ÅV²Ù×÷ÐźÅÁ¿µÄcapabilityУÑ飬get_kernel_parameter()->capability.capability_2·ÅP×÷ÐźÅÁ¿µÄcapabilityУÑé¡£
    3.·µ»ØÖµ£ºbxÖдæ·ÅV²Ù×÷µÄÖ´Ðнá¹û£¬dxÖдæ·ÅP²Ù×÷µÄÖ´Ðнá¹û£¬´óÓÚµÈÓÚ±íʾ³É¹¦£¬Ð¡ÓÚÁã±íʾʧ°Ü¡£
    4.Àý1£º¶ÔÐźÅÁ¿Ö´ÐÐV²Ù×÷

#include¡±../include/os.h¡±
{
    REG r;
    union system_call_parameter *par;
    par= get_kernel_parameter();                /*È¡²ÎÊýÇøµØÖ·*/
    COPY_CAPABILITY((*(memory_body->capability)),(par->capability.capability_1));        /*ÉèÖÃÐźÅÁ¿µÄcapabilityУÑé*/
    r.system_call=4;
    r.system_call_arg1=semaphore;                /*ÐźÅÁ¿ID*/
    r.system_call_arg2=1;                        /*Ôö¼ÓֵΪ1*/
    r.system_call_arg3=0;                        /*²»Ö´ÐÐP²Ù×÷*/
    call_kernel(&r);
}

    5.Àý2£º¶ÔÐźÅÁ¿Ö´ÐÐP²Ù×÷

#include¡±../include/os.h¡±
{
    REG r;
    union system_call_parameter *par;
    par= get_kernel_parameter();                /*È¡²ÎÊýÇøµØÖ·*/
    COPY_CAPABILITY((*(memory_body->capability)),(par->capability.capability_2));        /*ÉèÖÃÐźÅÁ¿µÄcapabilityУÑé*/
    r.system_call=4;
    r.system_call_arg1=0;                        /*²»Ö´ÐÐV²Ù×÷*/
    r.system_call_arg3= semaphore;;                /*ÐźÅÁ¿ID*/
    r.system_call_arg4=TRUE;                        /*Èç¹ûÐèÒª£¬Ïß³Ì˯Ãß*/
    r.system_call_arg5=TRUE;                        /*ÔÊÐíÆäËüÏ߳̽øÈë½ø³Ì*/
    call_kernel(&r);
}

6.Àý3£º¶ÔÐźÅÁ¿Ö´ÐÐV²Ù×÷ºÍP²Ù×÷
#include¡±../include/os.h¡±
{
    REG r;
    union system_call_parameter *par;

    par= get_kernel_parameter();                /*È¡²ÎÊýÇøµØÖ·*/
    COPY_CAPABILITY((*(memory_body->capability)),(par->capability.capability_1));        /*ÉèÖÃV²Ù×÷ÐźÅÁ¿µÄcapabilityУÑé*/
    COPY_CAPABILITY((*(memory_body->capability)),(par->capability.capability_2));        /*ÉèÖÃP²Ù×÷ÐźÅÁ¿µÄcapabilityУÑé*/
    r.system_call=4;
    r.system_call_arg1=v_semaphore;                /*V²Ù×÷ÐźÅÁ¿ID*/
    r.system_call_arg2=1;                        /*Ôö¼ÓֵΪ1*/
    r.system_call_arg3= p_semaphore;                /*P²Ù×÷ÐźÅÁ¿ID*/
    r.system_call_arg4=TRUE;                        /*Èç¹ûÐèÒª£¬Ïß³Ì˯Ãß*/
    r.system_call_arg5=TRUE;                        /*ÔÊÐíÆäËüÏ߳̽øÈë½ø³Ì*/
    call_kernel(&r);
}


[Ŀ¼]


ÐźÅÁ¿¶¨Ê±

5ºÅ¹¦ÄÜ
    ÔÚÐ鵨ַ¿Õ¼ä»ùÓÚÎļþ²Ù×÷ϵͳÖУ¬¶¨Ê±¹¦ÄÜÊÇͨ¹ýÐźÅÁ¿ÊµÏÖ¡£Ó¦ÓóÌÐò¿ÉÒÔÖ¸¶¨Ò»¸öÐźÅÁ¿µÄ¶¨Ê±Ê±¿ÌÒÔ¼°¶¨Ê±¼ä¸ô¡£µ±ÐźÅÁ¿µÄ¶¨Ê±Ê±¿Ìµ½À´Ê±£¬²Ù×÷ϵͳÄں˰Ѷ¨Ê±Ê±¿ÌÏòºóµ÷ÕûÒ»¸ö¶¨Ê±¼ä¸ô£¬Í¬Ê±¶ÔÐźÅÁ¿Ö´ÐÐV²Ù×÷£¬Òò´ËÈç¹ûÓÐÏß³ÌÔÚÐźÅÁ¿ÉÏ˯Ãߣ¬Ôò½«Æä»½ÐÑ£¬´Ó¶øÊµÏÖ¶¨Ê±¡£
    1.¹¦ÄÜ£ºÉ趨ÐźÅÁ¿µÄ¶¨Ê±Ê±¿Ì£¬²¢¶ÔÐźÅÁ¿Ö´ÐÐP²Ù×÷¡£
    2.¸ñʽ£ºax.¼Ä´æÆ÷µÄֵΪ5
        bx.¼Ä´æÆ÷µÄֵΪÐźÅÁ¿ID
        cx.¼Ä´æÆ÷µÄÖµÖ¸¶¨¶ÔÐźÅÁ¿Ö´ÐÐP²Ù×÷ʱ£¬ÊÇ·ñ˯Ãß¡£TRUEÔò˯Ãߣ¬FALSE²»Ë¯Ãß¡£
        dx.¼Ä´æÆ÷µÄÖµÖ¸¶¨Ïß³Ì˯Ãßʱ£¬ÊÇ·ñÔÊÐíÆäËüµÄÏ߳̽øÈë½ø³Ì¡£TRUEÔòÔÊÐí£¬FALSE²»ÔÊÐí¡£
        si.¼Ä´æÆ÷µÄÖµÖ¸¶¨¶¨Ê±Ê±¼äµ½Ê±£¬Ö´ÐÐV²Ù×÷µÄÔö¼ÓÖµ¡£Èç¹ûСÓÚÁ㣬°ÑËùÓÐ˯ÃßÔÚÐźÅÁ¿ÉϵÄÏ̻߳½ÐÑ¡£
        ²ÎÊýÇøget_kernel_parameter()->set_semaphore_time.first_timeÖдæ·Å¶¨Ê±Ê±¿Ì¡£
        ²ÎÊýÇøget_kernel_parameter()->set_semaphore_time. step_timeÖдæ·Å¶¨Ê±¼ä¸ô¡£
        ²ÎÊýÇøget_kernel_parameter()->set_semaphore_time.semaphore_capability´æ·ÅÐźÅÁ¿µÄcapabilityУÑé¡£
    3.·µ»ØÖµ£ºax.¼Ä´æÆ÷µÄÖµ´óÓÚµÈÓÚÁã±íʾ³É¹¦£¬Ð¡ÓÚÁã±íʾʧ°Ü¡£
    4.Àý1£ºÐźÅÁ¿¶¨Ê±

#include¡±../include/os.h¡±
{
        union system_call_parameter *par=get_kernel_parameter();
        REG r;
        r.system_call=5;
        r.system_call_arg1=sem_id;
        r.system_call_arg2=TRUE;
        r.system_call_arg3=TRUE;
        r.system_call_arg4=(-1);
        get_current_time(&(par->set_semaphore_time.first_time));
        TIME_INC(1,(par->set_semaphore_time.first_time));
        SET_MINIMAL_STEP(par->set_semaphore_time.step_time);
        RESET_CAPABILITY(par->set_semaphore_time.semaphore_capability);
        call_kernel(&r);
}


[Ŀ¼]


´´½¨Ïß³Ì

6ºÅ¹¦ÄÜ
    1.¹¦ÄÜ£º´´½¨Ï̡߳£
    2.¸ñʽ£ºax.¼Ä´æÆ÷µÄֵΪ6
        bx.¼Ä´æÆ÷µÄֵΪ±»´´½¨µÄÏß³ÌËùÊôµÄ½ø³Ì
        cx.¼Ä´æÆ÷µÄÖµÖ¸¶¨±»´´½¨µÄÏ̴߳Ӻδ¦¿ªÊ¼Ö´ÐÐ
        dx.¼Ä´æÆ÷µÄÖµÖ¸¶¨±»´´½¨µÄÏ̵߳ĶÑÕ»Ö¸ÕëÉèÔںδ¦
        ÔÚ²ÎÊýÇøÖУ¬get_kernel_parameter()->capability.capability_1´æ·Å±»´´½¨Ïß³ÌËùÊôµÄ½ø³ÌµÄcapabilityУÑé
    3.·µ»ØÖµ£º
        ¸¸Ị̈߳ºax.¼Ä´æÆ÷µÄÖµ´óÓÚµÈÓÚÁã±íʾ´´½¨³É¹¦£¬ÆäֵΪ×ÓÏ̵߳ÄID£¬Í¬Ê±bx.¼Ä´æÆ÷µÄֵΪ0£»Èç¹ûax.¼Ä´æÆ÷µÄֵСÓÚÁ㣬±íʾ´´½¨Ê§°Ü¡£
        ×ÓỊ̈߳ºax.¼Ä´æÆ÷µÄÖµ×ÓÏ̵߳ÄID£¬bx.¼Ä´æÆ÷µÄֵΪ1£¬²¢°Ñ¶ÑÕ»Ö¸ÕëÉèÖõ½dx.¼Ä´æÆ÷Ö¸¶¨µÄµØÖ·ºó£¬´Ócx.¼Ä´æÆ÷µÄÖµÖ¸¶¨µØÖ·¿ªÊ¼Ö´ÐС£
    4.Àý ´´½¨Ïß³Ì

#include¡±../include/os.h¡±
{
    union system_call_parameter *par;
    REG r;

    par=get_kernel_parameter();
    RESET_CAPABILITY(par->capability.capability_1);
    r.ax=6;
    r.bx=1;
    r.cx=(int)test;                /* this is the entry point        where the new thread will execute */
    r.dx=DEFAULT_SP;        /*this is stack pointer for the new thread */
    call_kernel(&r);
}


[Ŀ¼]


½ø³Ì×ÊÔ´

10ºÅ¹¦ÄÜ
    1.¹¦ÄÜ£ºÎª½ø³Ì·ÖÅä×ÊÔ´¡£
    2.¸ñʽ£ºax.¼Ä´æÆ÷µÄֵΪ10
        bx¼Ä´æÆ÷´æ·Å½ø³ÌID
        ÔÚ²ÎÊýÇøÖУ¬get_kernel_parameter()-> process_attribute.process´æ·Å½ø³ÌµÄ¸÷Ïî²ÎÊý
        ÔÚ²ÎÊýÇøÖУ¬get_kernel_parameter()->process_attribute.capability´æ·ÅϵͳµÄcapabilityУÑé¡£Ö»ÓÐÓµÓÐϵͳµÄcapabilityУÑ飬²ÅÄÜΪ½ø³Ì·ÖÅä×ÊÔ´¡£
    3.·µ»ØÖµ£ºÈç¹û·ÖÅä³É¹¦£¬ax.¼Ä´æÆ÷µÄÖµ´óÓÚµÈÓÚÁ㣬ͬʱÔÚ²ÎÊýÇøget_kernel_parameter()->process_attribute.processÖдæ·Å·ÖÅäÒÔºó½ø³ÌµÄ¸÷Ïî²ÎÊý£»Èç¹û·ÖÅäʧ°Ü£¬ax.¼Ä´æÆ÷µÄֵСÓÚÁã¡£
    ½ø³ÌµÄ¸÷Ïî²ÎÊý±£´æÔÚÒ»¸öÊý¾Ý½á¹¹

struct process{
    run_point start_point;                /*½ø³ÌµÄ³õʼִÐеã*/
    int (*driver)(struct file_system_call_parameter *par);/*½ø³Ì¶ÔÓ¦µÄÇý¶¯³ÌÐò*/
    int priority;                                /*½ø³ÌµÄÓÅÏȼ¶*/
    int semaphore;                                /*½ø³ÌµÄ¹Ü³ÌÐźÅÁ¿*/
    int enter_thread_number,id;
                /*½øÈë½ø³ÌµÄÏß³ÌÊý,½ø³ÌµÄID*/
    int max_thread_number,thread_number,thread_ring;
                /*ÔÊÐí½ø³Ì´´½¨µÄ×î¶àÏß³ÌÊý,µ±Ç°´´½¨µÄÏß³ÌÊý*/
                /* thread_ring;ΪÄÚºËʹÓõÄÊý¾Ý½á¹¹*/
    int max_semaphore_number,semaphore_number,semaphore_ring;
                /*ÔÊÐí½ø³ÌÉêÇëµÄ×î¶àÐźÅÁ¿Êý,µ±Ç°ÉêÇëµÄÐźÅÁ¿Êý*/
                /* semaphore_ring;ΪÄÚºËʹÓõÄÊý¾Ý½á¹¹*/
    struct user_file_information file[USER_FILE_NUMBER];
                /*½ø³ÌµÄÎļþÐÅÏ¢*/
    struct capability capability;
                /*½ø³ÌµÄcapabilityУÑéÐÅÏ¢*/
}

11ºÅ¹¦ÄÜ
    1.¹¦ÄÜ£º²éѯ½ø³ÌµÄ×ÊÔ´¡£
    2.¸ñʽ£ºax.¼Ä´æÆ÷µÄֵΪ11
        bx¼Ä´æÆ÷´æ·Å½ø³ÌID
        ÔÚ²ÎÊýÇøÖУ¬get_kernel_parameter()->process_attribute.capability´æ·ÅcapabilityУÑé¡£Ö»ÓÐÓµÓÐϵͳµÄcapabilityУÑ飬»òÕß½ø³ÌµÄcapabilityУÑ飬²ÅÄܲéѯ½ø³ÌµÄ×ÊÔ´¡£
    3.·µ»ØÖµ£ºÈç¹û²éѯ½ø³ÌµÄ×ÊÔ´³É¹¦£¬ax.¼Ä´æÆ÷µÄÖµ´óÓÚµÈÓÚÁ㣬ͬʱÔÚ²ÎÊýÇøget_kernel_parameter()-> process_attribute.processÖдæ·Å½ø³ÌµÄ¸÷Ïî²ÎÊý£»Èç¹û·ÖÅäʧ°Ü£¬ax.¼Ä´æÆ÷µÄֵСÓÚÁã¡£
    4.Àý£º²éѯ½ø³ÌµÄ×ÊÔ´ºÍ·ÖÅä½ø³ÌµÄ×ÊÔ´

#include¡±../include/os.h¡±
{
    REG r;
    union system_call_parameter *par;

    par=get_kernel_parameter();
    RESET_CAPABILITY(par->process_attribute.capability);
    RESET_CAPABILITY(par->process_attribute.process.capability);
    r.ax=11;
    r.bx=1;
    call_kernel(&r);
    par->process_attribute.process.max_thread_number=THREAD_NUMBER;
    par->process_attribute.process.max_semaphore_number=SEMAPHORE_NUMBER;
    RESET_CAPABILITY(par->process_attribute.capability);
    RESET_CAPABILITY(par->process_attribute.process.capability);
    par->process_attribute.process.start_point.ip=enter_file_system;
    par->process_attribute.process.start_point.cs=0x23;
    par->process_attribute.process.start_point.ds=0x2b;
    par->process_attribute.process.start_point.ss=0x2b;

    r.ax=10;
    r.bx=1;
    call_kernel(&r);
}


[Ŀ¼]


ÉêÇëºÍÊÍ·ÅÐźÅÁ¿

12ºÅ¹¦ÄÜ
    1.¹¦ÄÜ£ºÉêÇëÐźÅÁ¿
    2.¸ñʽ£ºax.¼Ä´æÆ÷µÄֵΪ12
        bx¼Ä´æÆ÷´æ·Å½ø³ÌID
        cx¼Ä´æÆ÷´æ·ÅÐźÅÁ¿³õÖµ
    ÔÚ²ÎÊýÇøÖУ¬get_kernel_parameter()->capability.capability_1´æ·Å½ø³ÌµÄcapabilityУÑé¡£Ö»ÓÐÓµÓнø³ÌµÄcapabilityУÑ飬²ÅÄÜÉêÇë½ø³ÌµÄÐźÅÁ¿£»get_kernel_parameter()->capability.capability_2´æ·ÅÐźÅÁ¿µÄcapabilityУÑé¡£
    3.·µ»ØÖµ£ºÈç¹ûÉêÇëÐźÅÁ¿³É¹¦£¬ax.¼Ä´æÆ÷µÄֵΪÐźÅÁ¿ID£¬Í¬Ê±°ÑÐźÅÁ¿µÄcapabilityУÑéÉèÖÃΪget_kernel_parameter()->capability.capability_2£»Èç¹ûÉêÇëÐźÅÁ¿Ê§°Ü£¬ax.¼Ä´æÆ÷µÄֵСÓÚÁã¡£
    4.Àý£ºÉêÇëÐźÅÁ¿

#include¡±../include/os.h¡±
{
    REG r;
    union system_call_parameter *par;
    par=get_kernel_parameter();
    RESET_CAPABILITY(par->capability.capability_1); /*½ø³ÌcapabilityУÑé*/
    RESET_CAPABILITY(par->capability.capability_2); /*ÐźÅÁ¿µÄcapabilityУÑé*/
    r.ax=12;
    r.bx=2;        /*½ø³ÌID*/
    r.cx=1;        /*¼Ä´æÆ÷´æ·ÅÐźÅÁ¿³õÖµ*/
    call_kernel(&r);
}

13ºÅ¹¦ÄÜ
    1.¹¦ÄÜ£ºÊÍ·ÅÐźÅÁ¿
    2.¸ñʽ£ºax.¼Ä´æÆ÷µÄֵΪ13
        bx¼Ä´æÆ÷´æ·ÅÐźÅÁ¿ID
        ÔÚ²ÎÊýÇøÖУ¬get_kernel_parameter()->capability.capability_1´æ·ÅÐźÅÁ¿µÄcapabilityУÑé¡£
    3.·µ»ØÖµ£ºÈç¹ûÊÍ·ÅÐźÅÁ¿³É¹¦£¬ax.¼Ä´æÆ÷µÄÖµ´óÓÚµÈÓÚÁ㣻Èç¹ûÊÍ·ÅÐźÅÁ¿Ê§°Ü£¬ax.¼Ä´æÆ÷µÄֵСÓÚÁã¡£

[Ŀ¼]


Ïß³ÌÊôÐÔ

14ºÅ¹¦ÄÜ
    1.¹¦ÄÜ£ºÉèÖÃÏß³ÌÊôÐÔ
    2.¸ñʽ£ºax.¼Ä´æÆ÷µÄֵΪ14
        bx¼Ä´æÆ÷´æ·ÅÏß³ÌID£¬Ò²¾ÍÊÇÏ̶߳ÔÓ¦µÄÐźÅÁ¿µÄID¡£
        cx¼Ä´æÆ÷´æ·ÅÇ¿ÖÆÏ̷߳µ»ØµÄ´ÎÊý£¬Èç¹û¸Ã²ÎÊý´óÓÚÁ㣬ͬʱ¾ßÓÐÏàÓ¦µÄcapabilityУÑ飬¿ÉÒÔʵÏÖÏ̵߳ÄÇ¿ÖÆ·µ»Ø¡£
        dx¼Ä´æÆ÷´æ·ÅÏ̵߳ÄÓÅÏȼ¶
        ÔÚ²ÎÊýÇøÖУ¬get_kernel_parameter()->thread_attribute.current_process_capability´æ·ÅÏ̵߳±Ç°ËùÊô½ø³ÌµÄcapabilityУÑé¡£Ö»ÓÐÓµÓÐÏ̵߳±Ç°ËùÊô½ø³ÌµÄcapabilityУÑ飬²ÅÄÜÉèÖÃÏß³ÌÊôÐÔ¡£
    3.·µ»ØÖµ£º
    Èç¹ûÉèÖÃÏß³ÌÊôÐÔʧ°Ü£¬ax.¼Ä´æÆ÷µÄֵСÓÚÁã
    Èç¹ûÉèÖÃÏß³ÌÊôÐԳɹ¦£¬ax.¼Ä´æÆ÷µÄÖµ´óÓÚµÈÓÚÁ㣬±íʾִÐÐÁ˶àÉÙ´ÎÇ¿ÖÆÏ̷߳µ»Ø£¬bx.¼Ä´æÆ÷µÄÖµ·µ»ØÉèÖÃÏß³ÌÊôÐÔºó²éѯÏß³ÌÊôÐԵĽá¹û£¬Èç¹ûbx.¼Ä´æÆ÷µÄֵСÓÚÁ㣬±íʾ²éѯÏß³ÌÊôÐÔʧ°Ü£»Èç¹ûbx.¼Ä´æÆ÷µÄÖµ´óÓÚµÈÓÚÁ㣬±íʾ²éѯÏß³ÌÊôÐԳɹ¦£¬²éѯ½á¹û±£´æÔÚ²ÎÊýÇøµÄÏÂÃæ¼¸¸öÓòÖУº
a)get_kernel_parameter()->thread_attribute.priority£ºÏß³ÌÓÅÏȼ¶
b)get_kernel_parameter()->thread_attribute.return_stack_top£ºÏ̷߳µ»ØÕ»Õ»¶¥Ö¸Õë
c)get_kernel_parameter()->thread_attribute.process£ºÏß³ÌËùÊô½ø³Ì
d)get_kernel_parameter()->thread_attribute.current_process£ºÏ̵߳±Ç°ËùÊô½ø³Ì
get_kernel_parameter()->thread_attribute. exception_item.flag£º´æ·ÅÏß³ÌÊÇÕý³£Ç¨ÒƵ½µ±Ç°½ø³Ì»¹ÊÇÒì³£Ç¨ÒÆµ½µ±Ç°½ø³Ì¡£

15ºÅ¹¦ÄÜ
    1.¹¦ÄÜ£º²éѯÏß³ÌÊôÐÔ
    2.¸ñʽ£ºax.¼Ä´æÆ÷µÄֵΪ15
        bx¼Ä´æÆ÷´æ·ÅÏß³ÌID
        ÔÚ²ÎÊýÇøÖУ¬get_kernel_parameter()->thread_attribute.current_process_capability´æ·ÅÏ̵߳±Ç°ËùÊô½ø³ÌµÄcapabilityУÑé¡£Ö»ÓÐÓµÓÐÏ̵߳±Ç°ËùÊô½ø³ÌµÄcapabilityУÑ飬²ÅÄܲéѯÏß³ÌÊôÐÔ¡£
    3.·µ»ØÖµ£º
    Èç¹ûbx¼Ä´æÆ÷´æ·ÅÏß³ÌID´óÓÚÁ㣬±íʾ²éѯָ¶¨Ï̵߳ÄÊôÐԳɹ¦£»Èç¹û²éѯÏß³ÌÊôÐÔʧ°Ü£¬ax.¼Ä´æÆ÷µÄֵСÓÚÁ㣻Èç¹û²éѯÏß³ÌÊôÐԳɹ¦£¬ax.¼Ä´æÆ÷µÄÖµ´óÓÚµÈÓÚÁ㣬ͬʱ¸÷ÏîÊôÐÔ²ÎÊý±£´æÔÚ£º
a)get_kernel_parameter()->thread_attribute.priority£ºÏß³ÌÓÅÏȼ¶
b)get_kernel_parameter()->thread_attribute.return_stack_top£ºÏ̷߳µ»ØÕ»Õ»¶¥Ö¸Õë
c)get_kernel_parameter()->thread_attribute.process£ºÏß³ÌËùÊô½ø³Ì
d)get_kernel_parameter()->thread_attribute.current_process£ºÏ̵߳±Ç°ËùÊô½ø³Ì
e)get_kernel_parameter()->thread_attribute. exception_item.flag£º´æ·ÅÏß³ÌÊÇÕý³£Ç¨ÒƵ½µ±Ç°½ø³Ì»¹ÊÇÒì³£Ç¨ÒÆµ½µ±Ç°½ø³Ì¡£
        Èç¹ûbx¼Ä´æÆ÷´æ·ÅÏß³ÌIDСÓÚÁ㣬±íʾ²éѯµ±Ç°ÔËÐÐÏ̵߳ÄÊôÐÔ£¬
a)ax.¼Ä´æÆ÷µÄÖµ·µ»ØÏß³ÌID£¬Ò²¾ÍÊÇ˵Ï̶߳ÔÓ¦µÄÐźÅÁ¿¡£
b)bx.¼Ä´æÆ÷µÄÖµ·µ»ØÏß³ÌÓÅÏȼ¶
c)cx.¼Ä´æÆ÷µÄÖµ·µ»ØÏ̷߳µ»ØÕ»Õ»¶¥Ö¸Õë
d)dx.¼Ä´æÆ÷µÄÖµ·µ»ØÏß³ÌËùÊô½ø³Ì
e)si.¼Ä´æÆ÷µÄÖµ·µ»ØÏ̵߳±Ç°ËùÊô½ø³Ì
di.¼Ä´æÆ÷µÄÖµ·µ»Ø´æ·ÅÏß³ÌÊÇÕý³£Ç¨ÒƵ½µ±Ç°½ø³Ì»¹ÊÇÒì³£Ç¨ÒÆµ½µ±Ç°½ø³Ì

[Ŀ¼]


²éѯ´æ´¢ÌåÈÝÁ¿ºÍµØÖ·

20ºÅ¹¦ÄÜ
    1.¹¦ÄÜ£º²éѯ´æ´¢ÌåµÄÈÝÁ¿ºÍÔÚÎïÀíÄÚ´æµÄλÖÃ
    2.¸ñʽ£ºax.¼Ä´æÆ÷µÄֵΪ20
        bx¼Ä´æÆ÷´æ·Å´æ´¢ÌåID
    3.·µ»ØÖµ£º
        Èç¹ûbx¼Ä´æÆ÷Ö¸¶¨µÄ´æ´¢ÌåID´æ´¢Ìå´æÔÚ£¬Ôòax.¼Ä´æÆ÷µÄֵΪ´æ´¢ÌåµÄÈÝÁ¿£¬¶øbx.¼Ä´æÆ÷µÄֵΪ´æ´¢ÌåÔÚÎïÀíÄÚ´æµÄµØÖ·¡£
        Èç¹ûbx¼Ä´æÆ÷Ö¸¶¨µÄ´æ´¢ÌåID´æ´¢Ìå²»´æÔÚ£¬Ôòax¼Ä´æÆ÷ÖеÄֵСÓÚÁã
    4. Àý£ºÉêÇëÐźÅÁ¿

#include¡±../include/os.h¡±
{
    REG r;
    r.ax=20;
    r.bx=0;                /*ÁãºÅ´æ´¢Ìå*/
    call_kernel(&r);
    block_number=r.ax;
    block_base=r.bx;
}


[Ŀ¼]


ÉèÖÃÎļþ´°¿ÚcapabilityУÑé

21ºÅ¹¦ÄÜ
    1.¹¦ÄÜ£ºÉèÖýø³ÌÎļþ´°¿ÚµÄcapabilityУÑé
    2.¸ñʽ£ºax.¼Ä´æÆ÷µÄֵΪ21
        bx¼Ä´æÆ÷´æ·Å½ø³ÌµÄÎļþ´°¿ÚID
        cx¼Ä´æÆ÷´æ·Å½ø³ÌµÄÎļþ´°¿Úmap_length£¬Ò²¾ÍÊǵ±·¢ÉúµØÖ·Ó³ÉäʧЧÒ쳣ʱ£¬Í¬Ê±½¨Á¢µØÖ·Ó³ÉäµÄÐé¿Õ¼äÇøÓò³¤¶È¡£
        dx¼Ä´æÆ÷´æ·ÅÎļþ´°¿Ú·ÃÎÊȨÏÞ
        ÔÚ²ÎÊýÇøÖУ¬get_kernel_parameter()->capability.capability_1´æ·Å½ø³ÌÎļþ´°¿ÚµÄcapabilityУÑé¡£
        si¼Ä´æÆ÷´æ·Å¸Ã½ø³ÌÎļþ´°¿Ú¶ÔÓ¦µÄϵͳÎļþÔÚÄĸö´æ´¢Ìå
        di¼Ä´æÆ÷´æ·Å¸Ã½ø³ÌÎļþ´°¿Ú¶ÔÓ¦µÄϵͳÎļþÊÇ´æ´¢ÌåÖеÄÄĸöϵͳÎļþ´°¿Ú
    3.·µ»ØÖµ£º
        Èç¹ûÉèÖóɹ¦£¬ÔòaxµÄ·µ»ØÖµ´óÓÚµÈÓÚÁã
        Èç¹ûÉèÖÃʧ°Ü£¬ÔòaxµÄ·µ»ØÖµÐ¡ÓÚÁã
    4.Àý£ºÉèÖÃÎļþµÄ½ø³ÌcapabilityУÑé

#include¡±../include/os.h¡±
{
    REG r;
    RESET_CAPABILITY(get_kernel_parameter()->capability.capability_1);
        /*ÉèÖÃÎļþУÑéÐÅÏ¢*/
    r.ax=21;
    r.bx=2;        /*½ø³ÌµÄÎļþ´°¿ÚID*/
    r.cx=512;        /*µ±·¢ÉúµØÖ·Ó³ÉäʧЧÒ쳣ʱ£¬Í¬Ê±½¨Á¢µØÖ·Ó³ÉäµÄÐé¿Õ¼äÇøÓò³¤¶È*/
    r.dx=READ_ONLY;/* dx¼Ä´æÆ÷´æ·ÅÎļþ´°¿Ú·ÃÎÊȨÏÞ*/
    r.si=0;/*si¼Ä´æÆ÷´æ·Å¸Ã½ø³ÌÎļþ´°¿Ú¶ÔÓ¦µÄϵͳÎļþÔÚÄĸö´æ´¢Ìå*/
    r.di=0;/*di¼Ä´æÆ÷´æ·Å¸Ã½ø³ÌÎļþ´°¿Ú¶ÔÓ¦µÄϵͳÎļþÊÇ´æ´¢ÌåÖеÄÄĸöÎļþ´°¿Ú*/
    call_kernel(&r);
}

22ºÅ¹¦ÄÜ
    1.¹¦ÄÜ£ºÉèÖÃÏß³ÌÎļþµÄcapabilityУÑé
    2.¸ñʽ£ºax.¼Ä´æÆ÷µÄֵΪ22
        bx¼Ä´æÆ÷´æ·ÅÏß³ÌÎļþ´°¿ÚID
        cx¼Ä´æÆ÷´æ·ÅÏß³ÌÎļþ´°¿Úmap_length£¬Ò²¾ÍÊǵ±·¢ÉúµØÖ·Ó³ÉäʧЧÒ쳣ʱ£¬Í¬Ê±½¨Á¢µØÖ·Ó³ÉäµÄÐé¿Õ¼äÇøÓò³¤¶È¡£
        dx¼Ä´æÆ÷´æ·ÅÏß³ÌÎļþ´°¿Ú·ÃÎÊȨÏÞ
        ÔÚ²ÎÊýÇøÖУ¬get_kernel_parameter()->capability.capability_1´æ·ÅÏß³ÌÎļþ´°¿ÚµÄcapabilityУÑé¡£
        si¼Ä´æÆ÷´æ·Å¸Ã½ø³ÌÎļþ¶ÔÓ¦µÄϵͳÎļþ´°¿ÚÔÚÄĸö´æ´¢Ìå
        di¼Ä´æÆ÷´æ·Å¸Ã½ø³ÌÎļþ¶ÔÓ¦µÄϵͳÎļþ´°¿ÚÊÇ´æ´¢ÌåÖеÄÄĸöϵͳÎļþ´°¿Ú
    3.·µ»ØÖµ£º
        Èç¹ûÉèÖóɹ¦£¬ÔòaxµÄ·µ»ØÖµ´óÓÚµÈÓÚÁã
        Èç¹ûÉèÖÃʧ°Ü£¬ÔòaxµÄ·µ»ØÖµÐ¡ÓÚÁã
    4.Àý£ºÉèÖÃÎļþµÄ½ø³ÌcapabilityУÑé

#include¡±../include/os.h¡±
{
    REG r;
    RESET_CAPABILITY(get_kernel_parameter()->capability.capability_1);
                ./*ÉèÖÃÎļþУÑéÐÅÏ¢*/
    r.ax=22;
    r.bx=2;                /*Ïß³ÌÎļþID*/
    r.cx=512;        /*µ±·¢ÉúµØÖ·Ó³ÉäʧЧÒ쳣ʱ£¬Í¬Ê±½¨Á¢µØÖ·Ó³ÉäµÄÐé¿Õ¼äÇøÓò³¤¶È¡£*/
    r.dx=READ_ONLY;        /* dx¼Ä´æÆ÷´æ·ÅÎļþ·ÃÎÊȨÏÞ*/
    r.si=0;                 /*si¼Ä´æÆ÷´æ·Å¸ÃÏß³ÌÎļþ¶ÔÓ¦µÄϵͳÎļþÔÚÄĸö´æ´¢Ìå*/
    r.di=0;        /* di¼Ä´æÆ÷´æ·Å¸ÃÏß³ÌÎļþ¶ÔÓ¦µÄϵͳÎļþÊÇ´æ´¢ÌåÖеÄÄĸöÎļþ*/
    call_kernel(&r);
}

23ºÅ¹¦ÄÜ
    1.¹¦ÄÜ£º¼ì²éÏß³ÌÊÇ·ñ¿ÉÒÔ·ÃÎÊij¸öÎļþ
    2.¸ñʽ£ºax.¼Ä´æÆ÷µÄֵΪ23
        bx¼Ä´æÆ÷´æ·ÅÎļþID
    3.·µ»ØÖµ£º
        Èç¹û¿ÉÒÔ·ÃÎÊÎļþ£¬ÔòaxµÄ·µ»ØÖµ´óÓÚµÈÓÚÁ㣬ÆäֵΪ¸ÃÎļþ¶ÔÓ¦µÄϵͳÎļþÊÇ´æ´¢ÌåÖеÄÄĸöϵͳÎļþ¡£
a)cx¼Ä´æÆ÷·µ»Ø¸ÃÎļþ¶ÔÓ¦µÄϵͳÎļþλÓÚÄĸö´æ´¢Ìå
b)dx¼Ä´æÆ÷·µ»Ø¸ÃÎļþ¶ÔÓ¦µÄϵͳÎļþÊÇ´æ´¢ÌåÖеÄÄĸöϵͳÎļþ´°¿Ú
c)si¼Ä´æÆ÷·µ»Øµ±·¢ÉúµØÖ·Ó³ÉäʧЧÒ쳣ʱ£¬Í¬Ê±Îª¶àÉÙ¸öÒ³Ãæ½¨Á¢µØÖ·Ó³Éä¡£
d)di¼Ä´æÆ÷·µ»ØÎļþ·ÃÎÊȨÏÞ
Èç¹û²»¿ÉÒÔ·ÃÎÊÎļþ£¬ÔòaxµÄ·µ»ØÖµÐ¡ÓÚÁã


[Ŀ¼]


ÄÚ´æ¹ÜÀíÆ÷ÌṩµÄ¹¦Äܵ÷ÓÃ

    ÔÚÐ鵨ַ¿Õ¼ä»ùÓÚÎļþ²Ù×÷ϵͳÖУ¬ÓÉÄÚ´æ¹ÜÀíÆ÷¸ºÔðÄÚ´æµÄ¹ÜÀíºÍ·ÖÅ䣬µ±Ó¦ÓóÌÐòÔËÐÐʱ£¬Èç¹ûÏ̷߳ÃÎʵÄÊý¾ÝÔÚÄÚ´æ²»´æÔÚ£¬²Ù×÷ϵͳÄÚºËÖеÄÒì³£´¦Àí³ÌÐò½«µ÷ÓÃÄÚ´æ¹ÜÀíÆ÷£¬ÄÚ´æ¹ÜÀíÆ÷·ÖÅäÒ³¿ò£¬ÔÙ´ÓÄÚ´æ¹ÜÀíÆ÷Ç¨ÒÆµ½ÎļþϵͳִÐÐÎļþÊý¾ÝµÄ¶Áд£¬µ±Ï̴߳ÓÎļþϵͳ·µ»ØÊ±£¬Êý¾ÝÒѾ­´æ´¢ÔÚÄÚ´æµÄÒ³¿òÖУ¬ÄÚ´æ¹ÜÀíÆ÷½¨Á¢µØÖ·Ó³ÉäÈ»ºó·µ»Ø£¬µ±Ï̴߳ÓÄÚ´æ¹ÜÀíÆ÷·µ»Øºó£¬Ï̷߳ÃÎʵÄÊý¾ÝÒѾ­ÔÚÄÚ´æÖУ¬Ïß³ÌÒ²¾Í¿ÉÒÔ¼ÌÐøÖ´ÐÐÁË¡£
    ÄÚ´æ¹ÜÀíÆ÷ͨ¹ý´æ´¢ÓòµÄ¸ÅÄîʵʩ´æ´¢×ÊÔ´µÄ¹ÜÀí£¬Ã¿´ÎÓ¦ÓóÌÐò´ò¿ªÎļþ´°¿Ú£¬¶¼ÐèÒªÉùÃ÷ÒÔÄĸö´æ´¢ÓòµÄÉí·Ý´ò¿ª£¬Ã¿´ÎÓ¦ÓóÌÐòÇëÇó·ÖÅäÒ³¿ò¶ÁдÊý¾Ý£¬¶¼ÐèÒªÉùÃ÷ÒÔÄĸö´æ´¢ÓòµÄÉí·ÝÇëÇó·ÖÅä¡£ÄÚ´æ¹ÜÀíÆ÷ͨ¹ý´æ´¢Óò³éÏóʵʩ¶Ô×ÊÔ´µÄ¿ØÖÆ£¬·ÀֹijЩӦÓóÌÐòʹÓùý¶àµÄ´æ´¢×ÊÔ´¡£
[Ŀ¼]


Îļþ´°¿Ú

0ºÅ¹¦ÄÜ
    1.¹¦ÄÜ£º´ò¿ªÎļþ´°¿Ú
    2.¸ñʽ£º
        ax¼Ä´æÆ÷´æ·Å´æ´¢ÌåID¡£
        bx.¼Ä´æÆ÷µÄֵΪ0£¬Ò²¾ÍÊÇ´ò¿ªÎļþ´°¿ÚµÄ¹¦Äܺš£
    ÔÚ²ÎÊýÇøÖУ¬get_memory_parameter()->open_file_window.file_window_id´æ·ÅÎļþ´°¿ÚµÄID£¬Èç¹û>=0£¬±íʾָ¶¨´ò¿ªµÄÎļþ´°¿ÚID£»Èç¹û<0£¬±íʾÓÉÄÚ´æ¹ÜÀíÆ÷·ÖÅäÒ»¸öÎļþ´°¿ÚID¡£
    get_memory_parameter()->open_file_window.file_window.file´æ·ÅÎļþ´°¿ÚµÄ¸÷Ïî²ÎÊý£¬ÆäÊý¾Ý½á¹¹Îª£º
    struct file{
        struct{
            struct network_address network_node;
                                        /*ÎļþϵͳµÄÍøÂçµØÖ·*/
            int server_processor,server_process,file_handler;
                                        /*ÎļþϵͳËù´æÔڵĴ¦Àí»úID,ÎļþϵͳµÄ½ø³ÌID*/
                                        /*ÎļþÔÚÎļþϵͳÖеÄÎļþID */
        }file;
        struct{
            int processor,process;        /*ÎļþÔÚ±¾µØ´úÀíµÄ´¦Àí»úIDºÍ½ø³ÌID*/
        }proxy;
        int memory_process,open_window_id;
                        /*Îļþ´°¿ÚËùÊôµÄ´æ´¢Óò, Îļþ´°¿ÚÔÚÄÚºËÖеıêʶÊý*/
        int window_base_1,window_base_2,window_length,right;
                /*Îļþ´°¿ÚÔÚÎļþÖеĻùµØÖ·, ³¤¶ÈºÍȨÏÞ*/
        struct capability capability;
                        /*Îļþ´°¿ÚµÄcapability УÑé*/
        int read_in_flag,swap_out_flag;
                        /*ÊÇ·ñ´ÓÍâ´æ¶ÁÎļþÊý¾Ý±êÖ¾£¬ÊÇ·ñ»»³ö±êÖ¾*/
    };
    get_memory_parameter()->open_file_window. process_capability´æ·ÅÎļþ´°¿ÚËùÊô´æ´¢ÓòµÄcapabilityУÑé¡£
    3.·µ»ØÖµ£º
        Èç¹û´ò¿ª³É¹¦£¬ÔòaxµÄ·µ»ØÖµ´óÓÚµÈÓÚÁã,ΪÎļþ´°¿ÚµÄID¡£
        Èç¹û´ò¿ªÊ§°Ü£¬ÔòaxµÄ·µ»ØÖµÐ¡ÓÚÁã¡£

4.Àý£º´ò¿ªÎļþ´°¿Ú

#include"../include/os.h"
{
    REG r;
    union memory_call_parameter *par)
    struct file *f;
    par->open_file_window.file_window_id=fd;
        f=&(par->open_file_window.file_window);

        f->file.file.server_processor=0;
        f->file.file.server_process=2;
        f->file.file.file_handler=0;

        f->file.proxy.processor=0;
        f->file.proxy.process=((fd&0x01)==0)?2:2;

        f->file.open_window_id=fd;
        f->file.window_base_1=0;
        f->file.window_base_2=0;
        f->file.window_length=512*1024*1024;

        f->file.memory_process=0;
        f->file.right=READ_WRITE;

        RESET_CAPABILITY(f->file.capability);
        RESET_CAPABILITY(par->open_file_window.process_capability);

        f->file.read_in_flag=TRUE;
        f->file.swap_out_flag=TRUE;

    r.ax=0;
    r.bx=0;
    call_memory(&r);
}

1ºÅ¹¦ÄÜ
    1.¹¦ÄÜ£º¹Ø±ÕÎļþ´°¿Ú
    2.¸ñʽ£º
        ax¼Ä´æÆ÷´æ·Å´æ´¢ÌåID¡£
        bx.¼Ä´æÆ÷µÄֵΪ1£¬Ò²¾ÍÊǹرÕÎļþ´°¿ÚµÄ¹¦Äܺš£
        ÔÚ²ÎÊýÇøÖУ¬get_memory_parameter()->close_file_window.file_window_id´æ·ÅÇëÇ󹨱յÄÎļþ´°¿ÚID¡£
        ÔÚ²ÎÊýÇøÖУ¬get_memory_parameter()->par->close_file_window.file_capability´æ·ÅÎļþ´°¿ÚcapabilityУÑé¡£
    3.·µ»ØÖµ£º
        Èç¹û¹Ø±Õ³É¹¦£¬ÔòaxµÄ·µ»ØÖµ´óÓÚµÈÓÚÁã¡£
        Èç¹û¹Ø±Õʧ°Ü£¬ÔòaxµÄ·µ»ØÖµÐ¡ÓÚÁã¡£

[Ŀ¼]


µØÖ·Ó³Éä

2ºÅ¹¦ÄÜ
    1.¹¦ÄÜ£º½¨Á¢µØÖ·Ó³Éä
    2.¸ñʽ£º
        ax¼Ä´æÆ÷´æ·Å´æ´¢ÌåID¡£
        bx.¼Ä´æÆ÷µÄֵΪ2£¬Ò²¾ÍÊǽ¨Á¢µØÖ·Ó³ÉäµÄ¹¦Äܺš£
        ÔÚ²ÎÊýÇøÖУ¬get_memory_parameter()->memory_map_deal.file_window_id´æ·ÅÇëÇó½¨Á¢µØÖ·Ó³ÉäµÄÎļþ´°¿Ú¡£
        ÔÚ²ÎÊýÇøÖУ¬get_memory_parameter()->memory_map_deal.begin_logic_address´æ·ÅÇëÇó½¨Á¢µØÖ·Ó³ÉäµÄÎļþ´°¿ÚÆðʼµØÖ·¡£
        ÔÚ²ÎÊýÇøÖУ¬get_memory_parameter()->memory_map_deal.end_logic_address,´æ·ÅÇëÇó½¨Á¢µØÖ·Ó³ÉäµÄÎļþ´°¿ÚÖÕÖ¹µØÖ·¡£
        ÔÚ²ÎÊýÇøÖУ¬get_memory_parameter()->memory_map_deal.file_capability,´æ·ÅÇëÇó½¨Á¢µØÖ·Ó³ÉäµÄÎļþ´°¿ÚµÄcapabilityУÑé¡£
    3.·µ»ØÖµ£º
        Èç¹û½¨Á¢µØÖ·Ó³Éä³É¹¦£¬ÔòaxµÄ·µ»ØÖµ´óÓÚµÈÓÚÁã¡£
        Èç¹û½¨Á¢µØÖ·Ó³Éäʧ°Ü£¬ÔòaxµÄ·µ»ØÖµÐ¡ÓÚÁã¡£

[Ŀ¼]


flush

3ºÅ¹¦ÄÜ
    1.¹¦ÄÜ£º°Ñij¸ö´æ´¢ÓòµÄËùÓÐÒѾ­Ð޸ĵÄÎïÀíÒ³¿òÖеÄÊý¾Ýд»ØÎļþÖС£
    2.¸ñʽ£º
        ax¼Ä´æÆ÷´æ·Å´æ´¢ÌåID¡£
        bx.¼Ä´æÆ÷µÄֵΪ3£¬Ò²¾ÍÊÇflush´æ´¢ÓòµÄ¹¦Äܺš£
        ÔÚ²ÎÊýÇøÖУ¬get_memory_parameter()->flush_memory_process.give_up_flag´æ·ÅÊÇ·ñ·ÅÆú±êÖ¾£¬Èç¹û¸Ã±ê־ΪTRUE£¬Ôò½ö½ö±êÖ¾¸÷¸öÒѾ­Ð޸ĵÄÎïÀíÒ³¿òÖеÄÊý¾ÝÒѾ­Ð´»ØÎļþÖУ¬µ«ÊDz»Ö´ÐÐдÎļþ²Ù×÷¡£
        ÔÚ²ÎÊýÇøÖУ¬get_memory_parameter()->flush_memory_process.process_number´æ·Å´æ´¢ÓòµÄID¡£
        ÔÚ²ÎÊýÇøÖУ¬get_memory_parameter()->flush_memory_process. process_capability´æ·Å´æ´¢ÓòµÄcapabilityУÑé¡£
    3.·µ»ØÖµ£º
        Èç¹ûflush´æ´¢Óò³É¹¦£¬ÔòaxµÄ·µ»ØÖµ´óÓÚµÈÓÚÁã¡£
        Èç¹ûflush´æ´¢Óòʧ°Ü£¬ÔòaxµÄ·µ»ØÖµÐ¡ÓÚÁã¡£

4ºÅ¹¦ÄÜ
    1.¹¦ÄÜ£º°Ñij¸öÎļþ´°¿ÚµÄËùÓÐÒѾ­Ð޸ĵÄÎïÀíÒ³¿òÖеÄÊý¾Ýд»ØÎļþÖС£
    2.¸ñʽ£º
        ax¼Ä´æÆ÷´æ·Å´æ´¢ÌåID¡£
        bx.¼Ä´æÆ÷µÄֵΪ4£¬Ò²¾ÍÊÇflushÎļþ´°¿ÚµÄ¹¦Äܺš£
        ÔÚ²ÎÊýÇøÖУ¬get_memory_parameter()->flush_file_window.give_up_flag´æ·ÅÊÇ·ñ·ÅÆú±êÖ¾£¬Èç¹û¸Ã±ê־ΪTRUE£¬Ôò½ö½ö±êÖ¾¸÷¸öÒѾ­Ð޸ĵÄÎïÀíÒ³¿òÖеÄÊý¾ÝÒѾ­Ð´»ØÎļþÖУ¬µ«ÊDz»Ö´ÐÐдÎļþ²Ù×÷¡£
        ÔÚ²ÎÊýÇøÖУ¬get_memory_parameter()->flush_file_window.file_window_id´æ·ÅÎļþ´°¿ÚµÄID¡£
        ÔÚ²ÎÊýÇøÖУ¬get_memory_parameter()->flush_file_window.file_capability´æ·ÅÎļþ´°¿ÚµÄcapabilityУÑé¡£
    3.·µ»ØÖµ£º
        Èç¹ûflushÎļþ´°¿Ú³É¹¦£¬ÔòaxµÄ·µ»ØÖµ´óÓÚµÈÓÚÁã¡£
        Èç¹ûflushÎļþ´°¿Úʧ°Ü£¬ÔòaxµÄ·µ»ØÖµÐ¡ÓÚÁã¡£

[Ŀ¼]


±êÖ¾Ò³¿ò

5ºÅ¹¦ÄÜ
    1.¹¦ÄÜ£º±ê־ij¸öÒ³¿òÖеÄÊý¾ÝÒѾ­±»ÒÑÐ޸ģ¬Ò²¾ÍÊÇÖ´ÐÐÁËд²Ù×÷£¬µ±Ö´ÐÐflush²Ù×÷ʱ£¬½«°ÑÆäÖеÄÊý¾Ýд»ØÎļþÖС£ÔÚÐ鵨ַ¿Õ¼ä»ùÓÚÎļþ²Ù×÷ϵͳÖУ¬µ±Ö´ÐÐ2ºÅ¹¦Äܽ¨Á¢µØÖ·Ó³Éäʱ£¬ÄÚ´æ¹ÜÀíÆ÷½ö½ö½¨Á¢¾ßÓÐÖ»¶ÁȨÏ޵ĵØÖ·Ó³É䣬ÕâÑùµ±Ó¦ÓóÌÐò¶ÔÒ³ÃæÖ´ÐÐд²Ù×÷ʱ£¬½«ÔÙ´ÎÒýÆð´æ´¢·ÃÎÊʧЧÒì³££¬Òì³£´¦Àí³ÌÐòʹÏß³ÌÇ¨ÒÆµ½ÄÚ´æ¹ÜÀíÆ÷£¬Ö´ÐÐÄÚ´æ¹ÜÀíÆ÷ÖеÄ5ºÅ¹¦ÄÜ£¬°ÑÒ³¿ò±ê־ΪÒÑÐ޸ģ¬Í¬Ê±½¨Á¢¾ßÓжÁдȨÏ޵ĵØÖ·Ó³É䣬µ±Ï̴߳ÓÄ