| LFYOS |
ÎÒÃǰ²×°µÄ¿ª·¢»·¾³ÊÇ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£¬Õâ¾ÍÊǰ²×°µÄÐéÄâµØÖ·¿Õ¼ä»ùÓÚÎļþ²Ù×÷ϵͳ¡£Ñ¡Ôñ²¢Æô¶¯¸Ã²Ù×÷ϵͳ£¬ÐéÄâµØÖ·¿Õ¼ä»ùÓÚÎļþ²Ù×÷ϵͳ¼´¿ªÊ¼ÔËÐС£
#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
#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²Ù×÷
ÔÚ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Ëã·¨¡£
Ö´Ðдò¿ªÎļþ´°¿Úµ÷ÓÃʱ£¬Ê×ÏȱȽÏÔÊÐí¸Ã´æ´¢Óò´ò¿ªµÄ×î´óÎļþ´°¿ÚÊýºÍµ±Ç°¸Ã´æ´¢Óò´ò¿ªµÄÎļþ´°¿ÚÊý£¬Èç¹û´æ´¢ÓòÒѾ´ò¿ªÁËÔÊÐí´ò¿ªµÄËùÓÐÎļþ´°¿Ú£¬Ö±½Ó·µ»Ø³ö´í£»·ñÔò´Ó¿ÕÏÐÎļþ´°¿Ú¶ÓÁÐÖÐÒÆ³öÒ»¸öÎļþ´°¿Ú¿ØÖƿ飬²åÈëµ½´æ´¢ÓòµÄÎļþ´°¿Ú¶ÓÁÐÖУ¬¶Ô´æ´¢Óòµ±Ç°´ò¿ªµÄÎļþ´°¿ÚÊýÖ´ÐмÓÒ»²Ù×÷£¬ÉèÖÃÎļþ´°¿Ú¿ØÖÆ¿éÖеĸ÷¸öÓò£¨Îļþ·þÎñÆ÷µÄ±êʶ£¬¶ÔÓ¦µÄÍâ´æÉÏÎļþµÄ±êʶ£¬·ÃÎÊÎļþµÄȨÏÞ£¬Îļþ´°¿ÚµÄ´óСºÍÔÚÍâ´æÎļþÖеÄλÖ㬷ÃÎÊÎļþµÄ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µÄУÑéÐÅÏ¢£¬¼´¿É²éѯ´æ´¢ÓòµÄ´æ´¢×ÊÔ´¡£
´æ´¢ÌåµÄ³õʼ»¯
µ÷Óøù¦ÄÜʵÏÖ´æ´¢ÌåµÄ³õʼ»¯£¬³õʼ»¯ÄÚ´æ¹ÜÀíÆ÷Öеĸ÷¸öÊý¾Ý½á¹¹¡£
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ÊÇ·ñÏàͬ£¬Èç¹ûÏàͬÔòÈÏΪӦÓóÌÐò·ÃÎÊÏß³ÌÎļþ´°¿Ú¶ÔÓ¦µÄϵͳÎļþ´°¿Ú£¬·ñÔò˵Ã÷Ó¦ÓóÌÐò²»ÄÜ·ÃÎÊÐéÄâµØÖ·¿Õ¼ä¶ÔÓ¦µÄÎļþ´°¿Ú¡£
1.Ï̺߳ÍÎļþÖ®¼ä²»´æÔÚÈκÎÈ·¶¨µÄ¶ÔÓ¦¹ØÏµ£ºÊý¾Ý´æ´¢ÔÚÎļþÖУ¬Ö»Òª²»Ó°Ï찲ȫÐÔ£¬ÈκÎÎļþ¿ÉÒÔ±»ÈκÎÏ̷߳ÃÎÊ£¬ÈκÎÏß³ÌÒ²¶¼¿ÉÒÔ¼ÆËãÈκÎÎļþÖеÄÊý¾Ý¡£
2.Ï̺߳ͽø³ÌÖ®¼äÒ²²»´æÔÚÈ·¶¨µÄ¶ÔÓ¦¹ØÏµ£ºÏ߳̿ÉÒÔÔÚ²»Í¬µÄ½ø³ÌÖ®¼äÇ¨ÒÆ£¬ÔÚ²»Í¬Ê±¿ÌÏß³ÌÒÔ²»Í¬½ø³ÌµÄÉí·ÝÉêÇëºÍʹÓÃ×ÊÔ´¡£ÓÉÓÚËùÓÐÓ¦ÓóÌÐòÔÚͬһ¸öÎļþ¿Õ¼äÖÐÔËÐУ¬Ïß³ÌÇ¨ÒÆÊ±£¬½ö½öÐèÒªÖ´ÐÐCPUÏÖ³¡µÄÇ¨ÒÆ£¬²»ÐèÒªÖ´ÐгÌÐò´úÂë¡¢Êý¾ÝºÍ¶ÑÕ»µÈµÄÇ¨ÒÆ¡£
3.ÎļþºÍ½ø³ÌÖ®¼äÒ²²»´æÔÚÈ·¶¨µÄ¶ÔÓ¦¹ØÏµ£ºÎļþÊôÓÚÎļþ·þÎñÆ÷£¬ÊÇÎļþ·þÎñÆ÷ά»¤µÄÒ»¸ö¶ÔÏ󣬽ø³ÌÊÇϵͳ½øÐÐ×ÊÔ´¹ÜÀíµÄ¶ÔÏó£¬ÊDzÙ×÷ϵͳÄÚºËʵʩ×ÊÔ´¹ÜÀíµÄ³éÏó£¬ÊÇϵͳ×ÊÔ´µÄ³ÖÓÐÕß¡£
×ÜÖ®£¬ÔÚϵͳÄÚ´æÖÐÖÁÉÙÐèÒª³£×¤ÒÔÏÂÈý¸ö²¿¼þ£¬ÆäËüµÄÄÚÈÝ¿ÉÒÔÔÚϵͳÔËÐÐʱ¶¯Ì¬µØ°²×°ºÍÐ¶ÔØ£¬¿ÉÒÔÔÚϵͳÔËÐÐʱ¶¯Ì¬µØ»»Èë»»³ö£º
1.ÄÚºË
2.ÄÚ´æ¹ÜÀíÆ÷
3.ÖÁÉÙÒ»¸ö¾ßÌåµÄÎļþ·þÎñÆ÷»òÕßÒ»¸öͨÐÅ·þÎñÆ÷
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)£»
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);
£ý
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ÎÊÌâ¡£
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);
}
#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);
}
#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);
}
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);
}
#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.¼Ä´æÆ÷µÄֵСÓÚÁã¡£
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.¼Ä´æÆ÷µÄÖµ·µ»Ø´æ·ÅÏß³ÌÊÇÕý³£Ç¨ÒƵ½µ±Ç°½ø³Ì»¹ÊÇÒì³£Ç¨ÒÆµ½µ±Ç°½ø³Ì
#include¡±../include/os.h¡±
{
REG r;
r.ax=20;
r.bx=0; /*ÁãºÅ´æ´¢Ìå*/
call_kernel(&r);
block_number=r.ax;
block_base=r.bx;
}
#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µÄ·µ»ØÖµÐ¡ÓÚÁã
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µÄ·µ»ØÖµÐ¡ÓÚÁã¡£
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µÄ·µ»ØÖµÐ¡ÓÚÁã¡£