專(zhuān)利名稱(chēng):一種小型嵌入式文件存儲(chǔ)管理系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明是一種小型嵌入式文件存儲(chǔ)管理系統(tǒng),涉及數(shù)字?jǐn)?shù)據(jù)處理裝置和信息的存貯技術(shù)領(lǐng)域。
背景技術(shù):
隨著各種儀器設(shè)備的發(fā)展,各種小容量存儲(chǔ)器在設(shè)計(jì)中已經(jīng)變的不可或缺。因此,在小容量存儲(chǔ)器上實(shí)現(xiàn)文件管理系統(tǒng)也變的非常重要?,F(xiàn)有很多小容量存儲(chǔ)器的文件管理方法是首先,根據(jù)存儲(chǔ)器容量、文件大小和文件數(shù)目劃分存儲(chǔ)器的存儲(chǔ)空間,然后計(jì)算出各空間的首地址,并將文件依次存入指定首地址的空間內(nèi)。這樣的存儲(chǔ)管理方法存在很多弊端當(dāng)存儲(chǔ)器剩余空間、所存文件大小或文件數(shù)目發(fā)生變化時(shí),如果不重新分配存儲(chǔ)空間可能會(huì)造成存儲(chǔ)空間浪 費(fèi)或;很多小容量存儲(chǔ)器的文件管理方法雖然在可以任意改變存儲(chǔ)器大小,文件大小和數(shù)目,但是,因?yàn)槠渌饕牟煌晟茖?dǎo)致讀取,寫(xiě)入和刪除等程序的運(yùn)行很慢,影響存儲(chǔ)器的效率,甚至影響整個(gè)儀器設(shè)備的運(yùn)行效率和流暢度。對(duì)于小容量存儲(chǔ)器來(lái)說(shuō),空間的合理利用既能節(jié)省存儲(chǔ)空間,又能提高存儲(chǔ)效率,所以,一個(gè)好的文件管理系統(tǒng)對(duì)于存儲(chǔ)空間的優(yōu)化管理是尤其重要的。它能夠更高效地存取數(shù)據(jù),減少存儲(chǔ)空間的浪費(fèi),加快程序運(yùn)行速度,便于文件的索引、添加、修改和刪除。最重要的是當(dāng)存儲(chǔ)器正常工作期間發(fā)生掉電時(shí),它可以保證所存儲(chǔ)文件數(shù)據(jù)的完整性和安全性,并且如果數(shù)據(jù)因?yàn)槟承┨厥庠虺霈F(xiàn)問(wèn)題時(shí),也可以進(jìn)行數(shù)據(jù)恢復(fù)。CN1405683A公開(kāi)了一種FLASH存儲(chǔ)文件管理方法,CN102103597A公開(kāi)了一種DSP嵌入式FLASH文件存儲(chǔ)系統(tǒng),但它們都不夠理想。
發(fā)明內(nèi)容
本發(fā)明的目的是發(fā)明一種基于存儲(chǔ)器區(qū)塊化管理方式、適用于小容量存儲(chǔ)器文件管理、能夠高效的存取數(shù)據(jù)、減少存儲(chǔ)空間的浪費(fèi)、方便文件的管理、保證數(shù)據(jù)的安全性的小型嵌入式文件存儲(chǔ)管理系統(tǒng)。本發(fā)明采用了如下技術(shù)方案來(lái)實(shí)現(xiàn)將存儲(chǔ)器的空間分成兩部分(圖1),一部分是區(qū)塊分配表區(qū)(表1),其由一個(gè)特殊O區(qū)塊信息單元和若干普通區(qū)塊信息單元組成;另一部分是文件數(shù)據(jù)存儲(chǔ)區(qū),該區(qū)采用區(qū)塊化管理方式,由若干個(gè)大小相同的數(shù)據(jù)存儲(chǔ)區(qū)塊組成。每一個(gè)數(shù)據(jù)存儲(chǔ)區(qū)塊都有一個(gè)對(duì)應(yīng)的普通區(qū)塊信息單元,通過(guò)各個(gè)區(qū)塊信息單元形成由文件環(huán)形雙向鏈表、未用區(qū)塊環(huán)形單向鏈表和文件區(qū)塊線形單向鏈表三條鏈表組成的鏈表系統(tǒng)(圖2、3、4)來(lái)鏈接所有的區(qū)塊,并通過(guò)設(shè)置區(qū)塊信息單元中的各種狀態(tài)參數(shù)對(duì)鏈表系統(tǒng)(圖2、3、4)進(jìn)行管理。在該文件管理系統(tǒng)的區(qū)塊管理中使用了三個(gè)鏈表I、文件環(huán)形雙向鏈表(見(jiàn)圖2);區(qū)塊信息O將下一文件首塊號(hào)指向文件1,文件I將下一文件首塊號(hào)指向文件2,文件2將下一文件首塊號(hào)指向文件3,一直到文件η-l將下一文件首塊號(hào)指向文件n,文件η將下一文件首塊號(hào)指回區(qū)塊信息O ;區(qū)塊信息O將最后一文件首塊號(hào)指向文件η,文件η將最后一文件首塊號(hào)指向文件η-1,文件η-l將最后一文件首塊號(hào)指向文件η-2,一直到文件2將最后一文件首塊號(hào)指向文件1,文件I將最后一文件首塊號(hào)指回區(qū)塊信息O ;2、未用區(qū)塊環(huán)形單向鏈表(見(jiàn)圖3);區(qū)塊信息O將下一未用區(qū)塊號(hào)指向未用區(qū)塊I,未用區(qū)塊I將下一未用區(qū)塊號(hào)指向未用區(qū)塊2,如此,一直到未用區(qū)塊η-2將下一未用區(qū)塊號(hào)指向未用區(qū)塊η-l,未用區(qū)塊η_1將下一未用區(qū)塊號(hào)指向未用區(qū)塊n,未用區(qū)塊η將下一未用區(qū)塊號(hào)指回區(qū)塊信息O ;區(qū)塊信息O將最后一未用區(qū)塊號(hào)指向未用區(qū)塊η ;
3、文件區(qū)塊線形單向鏈表(見(jiàn)圖4);文件X首區(qū)塊將下一塊號(hào)指向文件X區(qū)塊I,文件X區(qū)塊I將下一塊號(hào)指向文件X區(qū)塊2,文件X區(qū)塊2將下一塊號(hào)指向文件X區(qū)塊3,一直到文件X區(qū)塊η-2將下一塊號(hào)指向文件X區(qū)塊η-l,文件X區(qū)塊η-l將下一塊號(hào)指向文件X區(qū)塊η。區(qū)塊分配表內(nèi)容解釋文件標(biāo)號(hào)所存儲(chǔ)文件按存儲(chǔ)先后順序的標(biāo)號(hào)(在該文件管理系統(tǒng)中暫時(shí)沒(méi)有用到);下一塊號(hào)同一文件所包括的區(qū)塊的鏈表指向,用于串聯(lián)整個(gè)文件所包含的區(qū)塊;下一文件首塊號(hào)用于記錄下一文件的首塊號(hào),用于形成文件環(huán)形鏈表;上一文件首塊號(hào)用于記錄上一文件的首塊號(hào),用于形成文件環(huán)形鏈表;區(qū)塊標(biāo)號(hào)記錄了當(dāng)前區(qū)塊的區(qū)塊號(hào),方便區(qū)塊管理和鏈表的指向;下一未用區(qū)塊號(hào)用于記錄下一未用區(qū)塊的區(qū)塊號(hào),用于形成未用區(qū)塊環(huán)形鏈表;最后一未用區(qū)塊號(hào)用于記錄鏈表最后一個(gè)未用區(qū)塊的區(qū)塊號(hào),用于形成環(huán)形鏈表;文件鏈表長(zhǎng)度用于記錄文件個(gè)數(shù),便于快速讀出存儲(chǔ)器內(nèi)的文件總個(gè)數(shù)。在此鏈表結(jié)構(gòu)中,區(qū)塊信息O (表I)的作用尤其重要,從該區(qū)塊可以直接讀出所存儲(chǔ)文件數(shù),可以根據(jù)鏈表算出未用區(qū)塊數(shù)。其中最重要的一是,可以根據(jù)“最后一文件首塊號(hào)”直接讀出“文件環(huán)形雙向鏈表”的首區(qū)塊號(hào),從而在該鏈表的末端加入新的文件;二是,可以根據(jù)“下一未用區(qū)塊號(hào)”讀出“未用區(qū)塊環(huán)形單向鏈”的第一個(gè)未用區(qū)塊,從而用于新文件存儲(chǔ)空間的申請(qǐng);三是,可以根據(jù)“最后一個(gè)未用區(qū)塊號(hào)”直接找到“未用區(qū)塊環(huán)形單向鏈表”的末尾,從而將已刪除文件的區(qū)塊根據(jù)“文件區(qū)塊線形單向鏈表”直接加入“未用區(qū)塊環(huán)形單向鏈表”。本發(fā)明的優(yōu)點(diǎn)是I)可以方便的實(shí)現(xiàn)文件的添加,文件的刪除,文件的提??;2)可以充分利用閑置的區(qū)塊用于存儲(chǔ),避免存儲(chǔ)空間的浪費(fèi);3)可以加快程序的運(yùn)行速度;4)可以保證數(shù)據(jù)存儲(chǔ)時(shí)其它已存儲(chǔ)數(shù)據(jù)的安全性;5)當(dāng)由于斷電等特殊情況的發(fā)生而導(dǎo)致區(qū)塊分配表的破壞時(shí),可以利用這三條鏈表推理出各個(gè)區(qū)塊相互間的鏈接關(guān)系,從而對(duì)區(qū)塊分配表和鏈表進(jìn)行修復(fù),恢復(fù)全部或者
部分?jǐn)?shù)據(jù)。
圖I存儲(chǔ)器區(qū)塊分配表圖2文件環(huán)形雙向鏈表圖3未用區(qū)塊環(huán)形單向鏈表圖4文件區(qū)塊線形單向鏈表
具體實(shí)施例方式下面結(jié)合該發(fā)明的附圖,對(duì)該發(fā)明的實(shí)施技術(shù)方案進(jìn)行詳細(xì)、完整和清晰的描述。實(shí)施例.將存儲(chǔ)器的空間分成兩部分(圖1),一部分是區(qū)塊分配表區(qū)(表1),其由一個(gè)特殊O區(qū)塊信息單元和若干普通區(qū)塊信息單元組成;另一部分是文件數(shù)據(jù)存儲(chǔ)區(qū),該區(qū)采用區(qū)塊化管理方式,由若干個(gè)大小相同的數(shù)據(jù)存儲(chǔ)區(qū)塊組成。每一個(gè)數(shù)據(jù)存儲(chǔ)區(qū)塊都有一個(gè)對(duì)應(yīng)的普通區(qū)塊信息單元,通過(guò)各個(gè)區(qū)塊信息單元形成由三條鏈表組成的鏈表系統(tǒng)(圖2、3、4)來(lái)鏈接所有的區(qū)塊,并通過(guò)設(shè)置區(qū)塊信息單元中的各種狀態(tài)參數(shù)對(duì)鏈表系統(tǒng)(圖
2、3、4)進(jìn)行管理。初始化文件管理系統(tǒng)一、如圖I所示,將存儲(chǔ)器分成區(qū)塊分配表區(qū)和文件數(shù)據(jù)存儲(chǔ)區(qū)。二、如表I所示,生成區(qū)塊分配表,即將區(qū)塊分配表初始化,在表I中所示的“區(qū)塊標(biāo)號(hào)”中寫(xiě)入對(duì)應(yīng)的區(qū)塊標(biāo)號(hào),使用“下一未用區(qū)塊標(biāo)號(hào)”從O區(qū)塊信息開(kāi)始,順序?qū)^(qū)塊全部分配到“未用區(qū)塊環(huán)形單向鏈表”(圖3)中,其余鏈表為空,形成鏈表系統(tǒng)(圖2、3、4)。在該文件管理系統(tǒng)的區(qū)塊管理中使用了三個(gè)鏈表I、文件環(huán)形雙向鏈表(見(jiàn)圖2);區(qū)塊信息O將下一文件首塊號(hào)指向文件1,文件I將下一文件首塊號(hào)指向文件2,文件2將下一文件首塊號(hào)指向文件3,一直到文件η-l將下一文件首塊號(hào)指向文件η,文件η將下一文件首塊號(hào)指回區(qū)塊信息O ;區(qū)塊信息O將最后一文件首塊號(hào)指向文件η,文件η將最后一文件首塊號(hào)指向文件η-1,文件η-l將最后一文件首塊號(hào)指向文件η-2,一直到文件2將最后一文件首塊號(hào)指向文件1,文件I將最后一文件首塊號(hào)指回區(qū)塊信息O ;所述文件標(biāo)號(hào)所存儲(chǔ)文件按存儲(chǔ)先后順序的標(biāo)號(hào);所述下一文件首塊號(hào)用于記錄下一文件的首塊號(hào),用于形成文件環(huán)形鏈表;所述上一文件首塊號(hào)用于記錄上一文件的首塊號(hào),用于形成文件環(huán)形鏈表;所述區(qū)塊標(biāo)號(hào)記錄了當(dāng)前區(qū)塊的區(qū)塊號(hào),方便區(qū)塊管理和鏈表的指向所述文件鏈表長(zhǎng)度用于記錄文件個(gè)數(shù),便于快速讀出存儲(chǔ)器內(nèi)的文件總個(gè)數(shù)。2、未用區(qū)塊環(huán)形單向鏈表(見(jiàn)圖3);區(qū)塊信息O將下一未用區(qū)塊號(hào)指向未用區(qū)塊I,未用區(qū)塊I將下一未用區(qū)塊號(hào)指向未用區(qū)塊2,如此,一直到未用區(qū)塊η-2將下一未用區(qū)塊號(hào)指向未用區(qū)塊η-l,未用區(qū)塊η_1將下一未用區(qū)塊號(hào)指向未用區(qū)塊n,未用區(qū)塊η將下一未用區(qū)塊號(hào)發(fā)回區(qū)塊信息O ;區(qū)塊信息O將最后一未用區(qū)塊號(hào)指向未用區(qū)塊η ;
所述下一未用區(qū)塊號(hào)用于記錄下一未用區(qū)塊的區(qū)塊號(hào),用于形成未用區(qū)塊環(huán)形鏈表;所述最后一未用區(qū)塊號(hào)用于記錄鏈表最后一個(gè)未用區(qū)塊的區(qū)塊號(hào),用于形成環(huán)形鏈表;3、文件區(qū)塊線形單向鏈表(見(jiàn)圖4);文件X首區(qū)塊將下一塊 號(hào)指向文件X區(qū)塊1,文件X區(qū)塊I將下一塊號(hào)指向文件X區(qū)塊2,文件X區(qū)塊2將下一塊號(hào)指向文件X區(qū)塊3,一直到文件X區(qū)塊η-2將下一塊號(hào)指向文件X區(qū)塊η-l,文件X區(qū)塊η-l將下一塊號(hào)指向文件X區(qū)塊η。所述下一塊號(hào)同一文件所包括的區(qū)塊的鏈表指向,用于串聯(lián)整個(gè)文件所包含的區(qū)塊;文件管理系統(tǒng)的讀取,寫(xiě)入,刪除一、讀取I)從O區(qū)塊信息(表I)的“下一文件首塊號(hào)”開(kāi)始,根據(jù)“文件環(huán)形雙向鏈表”(圖2)讀出相應(yīng)文件的“區(qū)塊標(biāo)號(hào)”(表I);2)根據(jù)當(dāng)前文件所在的首塊信息中的“下一塊號(hào)”(表I)和“文件區(qū)塊線形單向鏈表”(圖4)讀出整個(gè)文件的鏈表;3)根據(jù)讀出的鏈表計(jì)算出數(shù)據(jù)存儲(chǔ)區(qū)所有對(duì)應(yīng)的存儲(chǔ)區(qū)塊,然后讀出文件數(shù)據(jù)。二、寫(xiě)入I)從O區(qū)塊信息(表I)的“下一未用區(qū)塊標(biāo)號(hào)”(圖3)讀出相應(yīng)的“區(qū)塊標(biāo)號(hào)”;2)根據(jù)讀出的“區(qū)塊標(biāo)號(hào)”和“未用區(qū)塊環(huán)形單向鏈表”(圖3)修改相應(yīng)的分配表信息,從而將該區(qū)塊從“未用區(qū)塊環(huán)形單向鏈表”(圖3)中申請(qǐng)出來(lái);3)根據(jù)“文件環(huán)形雙向鏈表”(圖2)修改相應(yīng)的分配表信息,從而將該區(qū)塊添加到“文件環(huán)形雙向鏈表”(圖2)的末尾;4)如果數(shù)據(jù)滿一個(gè)區(qū)塊并需要繼續(xù)寫(xiě)入,則重復(fù)步驟I)和2);5)根據(jù)“文件區(qū)塊線形單向鏈表”(圖4)修改相應(yīng)的分配表,從而將申請(qǐng)出的區(qū)塊添加到“文件區(qū)塊線形單向鏈表”(圖4)的末尾;6)重復(fù)步驟4)和5),直到存儲(chǔ)完畢。三、刪除I)從O區(qū)塊信息(表I)的“下一文件首塊號(hào)”開(kāi)始,根據(jù)“文件環(huán)形雙向鏈表”(圖2)讀出要?jiǎng)h除的文件的“區(qū)塊標(biāo)號(hào)”;2)根據(jù)讀出的“區(qū)塊標(biāo)號(hào)”和“文件環(huán)形雙向鏈表”(圖2)修改相應(yīng)的分配表,從而將“文件的首塊號(hào)”從“文件環(huán)形雙向鏈表”(圖2)中刪除;3)根據(jù)“文件區(qū)塊線形單向鏈表”(圖4)修改相應(yīng)的分配表,從而將所有的屬于該文件的區(qū)塊依次刪除到“未用區(qū)塊環(huán)形單向鏈表”(圖3)的末尾,最后一條“文件區(qū)塊線形單向鏈表”被刪除,即一個(gè)文件被刪除。本例只需要通過(guò)修改分配表來(lái)對(duì)文件進(jìn)行寫(xiě)入和刪除,無(wú)需擦除存儲(chǔ)區(qū)域,大大提高的存儲(chǔ)效率。表I文件管理系統(tǒng)的區(qū)塊分配表..............................
權(quán)利要求
1.一種小型嵌入式文件存儲(chǔ)管理系統(tǒng),其特征是將存儲(chǔ)器的空間分成兩部分,一部分是區(qū)塊分配表區(qū),其由一個(gè)特殊O區(qū)塊信息單元和若干普通區(qū)塊信息單元組成;另一部分是文件數(shù)據(jù)存儲(chǔ)區(qū),該區(qū)采用區(qū)塊化管理方式,由若干個(gè)大小相同的數(shù)據(jù)存儲(chǔ)區(qū)塊組成;每一個(gè)數(shù)據(jù)存儲(chǔ)區(qū)塊都有一個(gè)對(duì)應(yīng)的普通區(qū)塊信息單元,通過(guò)各個(gè)區(qū)塊信息單元形成由文件環(huán)形雙向鏈表、未用區(qū)塊環(huán)形單向鏈表和文件區(qū)塊線形單向鏈表三條鏈表組成的鏈表系統(tǒng)來(lái)鏈接所有的區(qū)塊,并通過(guò)設(shè)置區(qū)塊信息單元中的各種狀態(tài)參數(shù)對(duì)鏈表系統(tǒng)進(jìn)行管理。
2.根據(jù)權(quán)利要求I所述的一種小型嵌入式文件存儲(chǔ)管理系統(tǒng),其特征是所述文件環(huán)形雙向鏈表為 區(qū)塊信息O將下一文件首塊號(hào)指向文件1,文件I將下一文件首塊號(hào)指向文件2,文件2將下一文件首塊號(hào)指向文件3,一直到文件η-i將下一文件首塊號(hào)指向文件n,文件η將下一文件首塊號(hào)指回區(qū)塊信息O ;區(qū)塊信息O將最后一文件首塊號(hào)指向文件η,文件η將最后一文件首塊號(hào)指向文件η-1,文件n-Ι將最后一文件首塊號(hào)指向文件η-2,一直到文件2將最后一文件首塊號(hào)指向文件1,文件I將最后一文件首塊號(hào)指回區(qū)塊信息O ; 所述文件標(biāo)號(hào)為所存儲(chǔ)文件按存儲(chǔ)先后順序的標(biāo)號(hào); 所述下一文件首塊號(hào)為用于記錄下一文件的首塊號(hào),用于形成文件環(huán)形鏈表; 所述上一文件首塊號(hào)為用于記錄上一文件的首塊號(hào),用于形成文件環(huán)形鏈表; 所述區(qū)塊標(biāo)號(hào)為記錄了當(dāng)前區(qū)塊的區(qū)塊號(hào),方便區(qū)塊管理和鏈表的指向。
所述文件鏈表長(zhǎng)度為用于記錄文件個(gè)數(shù),便于快速讀出存儲(chǔ)器內(nèi)的文件總個(gè)數(shù)。
3.根據(jù)權(quán)利要求I所述的一種小型嵌入式文件存儲(chǔ)管理系統(tǒng),其特征是所述未用區(qū)塊環(huán)形單向鏈表為 區(qū)塊信息O將下一未用區(qū)塊號(hào)指向未用區(qū)塊1,未用區(qū)塊I將下一未用區(qū)塊號(hào)指向未用區(qū)塊2,如此,一直到未用區(qū)塊η-2將下一未用區(qū)塊號(hào)指向未用區(qū)塊n-ι,未用區(qū)塊η_1將下一未用區(qū)塊號(hào)指向未用區(qū)塊n,未用區(qū)塊η將下一未用區(qū)塊號(hào)指回區(qū)塊信息O ;區(qū)塊信息O將最后一未用區(qū)塊號(hào)指向未用區(qū)塊η ; 所述下一未用區(qū)塊號(hào)為用于記錄下一未用區(qū)塊的區(qū)塊號(hào),用于形成未用區(qū)塊環(huán)形鏈表; 所述最后一未用區(qū)塊號(hào)為用于記錄鏈表最后一個(gè)未用區(qū)塊的區(qū)塊號(hào),用于形成環(huán)形鏈表。
4.根據(jù)權(quán)利要求I所述的一種小型嵌入式文件存儲(chǔ)管理系統(tǒng),其特征是所述文件區(qū)塊線形單向鏈表為 文件X首區(qū)塊將下一塊號(hào)指向文件X區(qū)塊1,文件X區(qū)塊I將下一塊號(hào)指向文件X區(qū)塊2,文件X區(qū)塊2將下一塊號(hào)指向文件X區(qū)塊3,一直到文件X區(qū)塊η-2將下一塊號(hào)指向文件X區(qū)塊n-Ι,文件X區(qū)塊n-Ι將下一塊號(hào)指向文件X區(qū)塊η ; 所述下一塊號(hào)為同一文件所包括的區(qū)塊的鏈表指向,用于串聯(lián)整個(gè)文件所包含的區(qū)塊。
全文摘要
本發(fā)明是一種小型嵌入式文件存儲(chǔ)管理系統(tǒng)。它是將存儲(chǔ)器的空間分成兩部分,一部分是區(qū)塊分配表區(qū),其由一個(gè)特殊0區(qū)塊信息單元和若干普通區(qū)塊信息單元組成;另一部分是文件數(shù)據(jù)存儲(chǔ)區(qū),該區(qū)采用區(qū)塊化管理方式,由若干個(gè)大小相同的數(shù)據(jù)存儲(chǔ)區(qū)塊組成;每一個(gè)數(shù)據(jù)存儲(chǔ)區(qū)塊都有一個(gè)對(duì)應(yīng)的普通區(qū)塊信息單元,通過(guò)各個(gè)區(qū)塊信息單元形成由文件環(huán)形雙向鏈表、未用區(qū)塊環(huán)形單向鏈表和文件區(qū)塊線形單向鏈表三條鏈表組成的鏈表系統(tǒng)來(lái)鏈接所有的區(qū)塊,并通過(guò)設(shè)置區(qū)塊信息單元中的各種狀態(tài)參數(shù)對(duì)鏈表系統(tǒng)進(jìn)行管理。本發(fā)明基于存儲(chǔ)器區(qū)塊化管理方式、適用于小容量存儲(chǔ)器文件管理,能夠高效的存取數(shù)據(jù),減少存儲(chǔ)空間的浪費(fèi),方便文件的管理,保證數(shù)據(jù)的安全性。
文檔編號(hào)G06F12/02GK102855327SQ20121034696
公開(kāi)日2013年1月2日 申請(qǐng)日期2012年9月18日 優(yōu)先權(quán)日2012年9月18日
發(fā)明者邱紅輝, 王海明, 吳瓊, 譚東杰, 周琰, 王立坤, 宋寧, 李柏松 申請(qǐng)人:中國(guó)石油天然氣股份有限公司